flip' :: (a -> b -> c) -> (b -> a -> c)
flip' f = g
where g x y = f y x
我想问一下,在上面的翻转'函数中,似乎翻转'将返回一个名为g的函数,并且g x y与f y x共享相同的值
然而,在“其中g x y = f y x”中,f y x是函数调用并将返回一个值,g x y将返回一个值,那么“where v2 = v1”是否有意义?
我知道代码可以运行,但我想知道更多关于它实现这种情况的方式。
有人有想法吗?非常感谢你
答案 0 :(得分:4)
在where g x y = f y x
中,g x y
不是带参数g
和x
的函数调用y
。它是函数g
的一个函数,它将2个参数x
和y
以及f y x
的评估函数作为函数。
所以这意味着flip'
给定一个函数f
,取两个参数将评估为g
。 g
本身被定义为交换两个参数来调用f
。