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