高阶函数

今天学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] == x1 f (x2 f ... (xn f z)...)

Python中的高阶函数

今天学到的python中,也有这几个高阶函数:map, reduce, filter, sorted。其中,map和filter和Haskell中的作用别无二致,而reduce则是foldl的一个简版,reduce只接受和a类型相同的b,在Haskell中定义reduce如下:

reduce :: (a -> a -> a) -> [a] -> a

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.