簡単な関数の値を考えてみましょうf1
:
let f1 = printfn "*bind f1*"; fun () -> printfn "f1()"
f1
としてFSIに結合します
*bind f1*
val f1 : (unit -> unit)
そして、呼び出されると、期待どおりに動作します
> () |> f1 |> f1;;
f1()
f1()
val it : unit = ()
次に、同様の関数値を取りますが、明示的にジェネリックにしf2<'a>
ます:
let f2<'a> = printfn "*bind f2*"; fun () -> printfn "f2()"
f2
としてFSIに結合します
val f2<'a> : (unit -> unit)
出力はまったくありませんが、呼び出されると、呼び出し*bind f2*
ごとに出力されます。f2
> () |> f2 |> f2;;
*bind f2*
f2()
*bind f2*
f2()
val it : unit = ()
私の質問は、このように観察された不均衡の原因は何でしょうか?