foldl/r
foldl f a [ b, c, d ] ----> f d (f c (f a b))
foldr f a [ b, c, d ] ----> f b (f c (f a d)) --正好相反。
e.g.
foldr (/) 2 [ 8, 12, 24, 4 ] ----> / 8 (/ 12 (/ 24 (/ 2 4)))
^ 0.5
^ 12
^ 1
^ 8
span
span f list -----> (a, b)
where a = 从list头部开始,连续的,满足f的元素,组成的list
b = 从第一个不满足f的元素开始的,所有元素,组成的list
span (== 0) [ 0, 0, 1, 2, 3, 0, 3 ] ------> ( [ 0, 0 ], [ 1, 2, 3, 0, 3 ] )