Чего мне не хватает, так это возможности частично применить второй аргумент функции, а не первый. Это особенно полезно, когда я хочу передать функцию в что-то вроде map, но без необходимости каждый раз писать лямбду для нее.
Я написал свою собственную функцию для этого (определение ниже, на случай, если для этого действительно нет встроенной функции, и кому-то еще было любопытно), но мне бы очень хотелось узнать, существует ли уже что-то в Прелюдия для этой идиомы, так как я предпочитаю использовать повторно, а не изобретать заново.
Вот мое определение и тривиальный пример:
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