今天学python的时候看到高阶函数我十分激动,因为上个学期学的Haskell也有高阶函数。虽然上个学期并不勤奋地学习Haskell,但是高阶函数仍然在我的脑海里留下深刻的印象,因为高阶函数实在是太太太牛逼了。
所以今天忍不住来复习一波高阶函数。
Haskell中的高阶函数
在Haskell中,有很多很好用的高阶函数,如下面几个: map
, filter
, foldl
, foldr
map
map :: (a -> b) -> [a] -> [b] map接受一个函数f和一个数列A并返回一个数列。其作用是将函数作用到A中的每一个元素上面
filter
filter :: (a -> Bool) -> [a] -> [a] filter是一个过滤器,它接受一个检验函数f和一个数列A并返回一个数列。其作用是用f来过滤A中的元素
foldr, foldl
foldr :: (a -> b -> b) -> b -> [a] -> b foldl和foldr的作用是将双参数的函数将列表处理
foldr f z [x1, x2, ..., xn] == x1f
(x2f
... (xnf
z)...)
Python中的高阶函数
今天学到的python中,也有这几个高阶函数:map
, reduce
, filter
, sorted
。其中,map和filter和Haskell中的作用别无二致,而reduce则是foldl的一个简版,reduce只接受和a类型相同的b,在Haskell中定义reduce如下: