我缺少的是部分应用函数的第二个参数而不是第一个参数的能力。当我想将函数传递给 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