美文网首页
FP学习之一

FP学习之一

作者: 80s老人 | 来源:发表于2015-12-01 22:00 被阅读43次

    最近开始学习函数式编程,目的是学习一种新的思路,不是形而上学的为纯函数而函数。
    谈谈 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]

    相关文章

      网友评论

          本文标题:FP学习之一

          本文链接:https://www.haomeiwen.com/subject/dgwjhttx.html