我缺少的是部分应用函数的第二个参数而不是第一个参数的能力。当我想要将函数传递给像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发布于 2009-01-30 20:37:57
它被称为flip。
示例:
Prelude> flip (-) 2 3
1为了便于将来参考,只需在Hoogle中搜索问题中的类型签名,即(a -> b -> c) -> b -> a -> c即可找到它
https://stackoverflow.com/questions/497132
复制相似问题