Haskellのflip
関数は、関数の最初の 2 つの引数の位置を切り替えるために使用されます。
flip :: (a -> b -> c) -> b -> a -> c
flip f y x = f x y
同様に、3 つの引数をローテーションする関数を作成できます。
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
、分割することはできません。それにもかかわらず、私は確かに知りたいです。