我有一个在\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 id
或flip ($)
(因为($)
只是函数的特殊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 id
或flip ($)
的类型。很有趣 :)关于Haskell函数反转函数调用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10815896/