質問
私はなぜこれを興味深い
let f = (fun a b -> a, b) >> obj.Equals
.
エラー
アクセス可能なメンバーまたはオブジェクトコンストラクタ '' equals 'という名前の引数
しかしこれは作品
.let f = (fun a -> a, a) >> obj.Equals
解決
タイプを検討してください。(>>)
には('a -> 'b) ->('b -> 'c) -> ('a -> 'c)
がありますが、'a -> ('b -> 'a*'b)
とobj * obj -> bool
の引数で呼び出すことを試みます。
もちろん、バイナリと単項関数を構成するための新しいコンビネットを定義することができます。
let ( >>* ) f g a b = f a b |> g
.
その場合は、(>>)
の代わりに標本で使用できます。
他のヒント
新しいコンビネット演算子を定義せずに:
let f = (fun a b -> a, b) >> (<<) obj.Equals
.
>> (<<)
は素晴らしいトリックであり、さらに引数のために拡張することもできます:
let compose3 f g = f >> (<<) ((<<) g)
val compose3 : ('a -> 'b -> 'c -> 'd) -> ('d -> 'e) -> ('a -> 'b -> 'c -> 'e)
. 所属していません StackOverflow