我有一个在\x f -> f x操作中使用的lambda foldM,其中x是一个值和f :: a -> b

有内置的功能可以做到这一点吗?

我可以更换吗

foldM (\x f -> f x) ...

加上一些f'
foldM f' ...

我以为flip可以做到这一点,但是它需要三个参数(flip :: (a -> b -> c) -> b -> a -> c)

它可能类似于F#中的|>

最佳答案

您可以使用flip idflip ($)(因为($)只是函数的特殊id):

Prelude> flip id 3 (+2)
5
Prelude> flip ($) 7 (>10)
False

这是部分应用程序的一种有趣用法:id f x带有f作为函数,只是f x。显然,这也与(flip id) x f相同,因此flip id是您要寻找的功能。

如果您喜欢冒险,请尝试手动推断flip idflip ($)的类型。很有趣 :)

关于Haskell函数反转函数调用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10815896/

10-16 06:56