Haskell 中的flip
函数用于切换函数前两个参数的位置:
flip :: (a -> b -> c) -> b -> a -> c
flip f y x = f x y
同样,我们可以编写一个函数来旋转三个参数:
rot :: (a -> b -> c -> d) -> b -> c -> a -> d
rot f y z x = f x y z
这个概念可以扩展到包含任意数量参数的函数吗?
给定一个类型的函数,a -> ... -> z
是否可以编写以下类型的函数?
(a -> ... -> z) -> ... -> a -> z
我知道->
运算符是右结合的。因此... -> z
不能拆分。不过,我很想知道。