哪种(翻转.)?

Fof*_*Fof 0 haskell types unification ghci

我试图理解为什么类型:

(flip .) is: (a -> a1 -> b -> c) -> a -> b -> a1 -> c

首先,类型:

flip: is (a -> b -> c) -> b -> a -> c (.): is (b -> c) -> (a -> b) -> a -> c

我将在我的解释中将变量重命名为更清晰,因此类型:

flip: is (ax -> bx -> cx) -> bx -> ax -> cx (.): is (by -> cy) -> (ay -> by) -> ay -> cy

然后我尝试这样替换:

ax = (by -> cy) bx = (ay -> by) cx = ay -> cy

因此得到的类型是:(ay - > by)(by - > cy) - > ay - > cy,这与正确的结果不同.

有帮助吗?

谢谢,塞巴斯蒂安.

Ry-*_*Ry- 7

(flip .)是的(.) flip,所以:

  • (.) :: (bx -> cx) -> (ax -> bx) -> ax -> cx
  • flip :: (ay -> by -> cy) -> by -> ay -> cy
  • (.) flip,
    • bxay -> by -> cy
    • cxby -> ay -> cy
    • 所以这就是全部(ax -> (ay -> by -> cy)) -> ax -> (by -> ay -> cy),
      这只是(ax -> ay -> by -> cy) -> ax -> by -> ay -> cy,
      与之匹配(flip .) :: (a -> a1 -> b -> c) -> a -> b -> a1 -> c.