0

次のタイプの理由を理解しようとしています。

(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 となり、正しい結果とは異なります。

何か助けはありますか?

ありがとう、セバスチャン。

4

1 に答える 1

7

(flip .)です(.) flipので:

  • (.) :: (bx -> cx) -> (ax -> bx) -> ax -> cx
  • flip :: (ay -> by -> cy) -> by -> ay -> cy
  • では(.) flip
    • bxay -> by -> cy
    • cxby -> ay -> cy
    • つまり、 all(ax -> (ay -> by -> cy)) -> ax -> (by -> ay -> cy)で、
      これは just(ax -> ay -> by -> cy) -> ax -> by -> ay -> cyであり、これは
      と一致し(flip .) :: (a -> a1 -> b -> c) -> a -> b -> a1 -> cます。
于 2014-04-20T21:09:52.730 に答える