私は F# で (特に F# インタラクティブを使用して) 研究を行っているので、切り替え可能な「デバッグ時に出力」機能が必要です。
できます
let dprintfn = printfn
F#インタラクティブ 言う
val dprintfn : (Printf.TextWriterFormat<'a> -> 'a)
そして私は使用することができます
dprintfn "myval1 = %d, other val = %A" a b
スクリプトでいつでも。
dprintfn
ここで、別の方法で定義したいと思います。これにより、すべての引数が無視されますが、printfn
. どのように?
私が考えている最も近い(まだ機能していない)バリアントは次のとおりです。
let dprintfn (arg: (Printf.TextWriterFormat<'a> -> 'a)) = ()
しかし、次はコンパイルされずdprintfn "%A" "Hello"
、結果はerror FS0003: This value is not a function and cannot be applied
.
PSDebug.WriteLine(...)
現在、回避策としてエイリアスを使用していますが、F# の型システムを理解する上で興味深い質問です。