FP学习之一

最近开始学习函数式编程,目的是学习一种新的思路,不是形而上学的为纯函数而函数。
谈谈 Currying (Haskell Curry)
这个比较好玩,Haskell定义一个2个参数的函数

let f x y = x + y

但你可以这样用它

map (f 2) [1, 2, 3, 4, 5]

Currying 其实就是用“单参数”的函数,来模拟多参数的函数,(f 2) 返回的是一个匿名函数,它会把 2 加到自己的参数上面返回。
如果你偏不要这样投机取巧,那就只能这样,(匿名函数Lambda在Haskell里用\表示)

map (\y->f 2 y) [1, 2, 3, 4, 5]

如果是除法呢,还想省个参数?

let f x y = x / y

只能交换2个参数位置才可以了,有点绕

map (flip f 2) [1, 2, 3, 4, 5]

还是直接的简单

map (\y->f y 2) [1, 2, 3, 4, 5]
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容