foldl x Cons S 0 xs foldl S x xs foldl S 0 Cons x xs foldl S x xs foldr a Cons x xs op x foldr a xs foldr a Nil a foldl a Nil a notEmpty Cons x xs True notEmpty Nil False op x S 0 S x op S 0 y S y fold a xs Cons foldl a xs Cons foldr a xs Nil foldl 2 Cons 2 S 1 0 0 foldr 2 op 2 Nil 0 notEmpty 1 True 0 False 0 fold 2 INNERMOST