F# には、次のように使用できる簡潔な引数チェック関数がいくつかあります。
let foo (bar : string) : string =
if bar = null then
nullArg "bar"
...
私はより規範的な表現を好みますが、コード コントラクトのように:
let foo (bar : string) : string =
Contract.Requires (bar <> null, "bar is null")
...
ただし、私が書きたいと思っているコードは次のとおりです。
let nonNull (expr : Expr) : unit =
// quotation magic
let foo (bar : string) : string =
nonNull <@ bar @>
...
問題は、これを F# で表現できるかどうかです。または別の言い方をすれば、F# で nonNull の実用的な実装はありますか?
私にはそう見えませんが、おそらくここの誰かがそれを確認できます。