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 ] )
posted on 2016-01-25 19:04  yanhh  阅读(218)  评论(0编辑  收藏  举报