通常の関数合成は次のタイプです
(.) :: (b -> c) -> (a -> b) -> a -> c
これは次のようなタイプに一般化する必要があると思います。
(.) :: (c -> d) -> (a -> b -> c) -> a -> b -> d
具体的な例:二乗の差の計算。書くことはできますがdiffsq a b = (a - b) ^ 2
、を作曲して、のようなものを書くことができるはずだと思います。(-)
(^2)
diffsq = (^2) . (-)
もちろんできません。私にできることの1つは、に2つの引数の代わりにタプルを使用して、(-)
それをで変換することuncurry
ですが、これは同じではありません。
私がやりたいことをすることは可能ですか?そうでない場合、それが可能であると私に思わせる私は何を誤解していますか?
注:これは事実上ここですでに尋ねられていますが、答え(私は存在しているに違いないと思います)は与えられていません。