我缺少的是部分应用函数的第二个参数而不是第一个参数的能力.当我想将函数传递给map之类的东西时,这尤其有用,但每次都不必为它编写lambda.
我为此编写了我自己的函数(下面定义,以防万一没有任何内置函数,其他任何人都很好奇),但我真的想知道Prelude中是否已存在某些内容因为我更喜欢重用而不是重新发明.
这是我的定义和一个简单的例子:
bind2nd :: (a -> b -> c) -> b -> a -> c bind2nd f b = \a -> f a b foo :: Int -> Bool -> String foo n b | b = show n | otherwise = "blabla" alwaysN :: Int -> String alwaysN = bind2nd foo True
ShreevatsaR.. 15
它被称为flip
.
例:
Prelude> flip (-) 2 3 1
为了将来参考,可以通过简单地在Hoogle中搜索问题中的类型签名来找到它,即(a - > b - > c) - > b - > a - > c.:-)
它被称为flip
.
例:
Prelude> flip (-) 2 3 1
为了将来参考,可以通过简单地在Hoogle中搜索问题中的类型签名来找到它,即(a - > b - > c) - > b - > a - > c.:-)