6

(\(a, b) -> a < b)関数合成で表現するより良い方法はありますか? 私は何かが欠けているように感じ、実験はcurry私をさらに混乱させるだけです.

4

2 に答える 2

12

curryここで使用するのは間違っています。タプルを操作する関数をカリー化された関数に変換します。反対のものが必要です。つまり、次のuncurryとおりです。

uncurry :: (a -> b -> c) -> (a, b) -> c

この場合はuncurry (<)です。

(タプルに関数を書くのに役立つコンビネータのもう 1 つの便利なソースはControl.Arrowです。(->)は のインスタンスであるため、としてArrow読むことができます。)a b cb -> c

于 2012-01-24T20:06:04.970 に答える