OCamlバージョン4.04のutopで関数fを定義します。OCamlの関数を優雅に無視する
utop # let f = function x -> x + 1;;
val f : int -> int = <fun>
fを無視しようとすると、警告が表示されます。
utop # let a = ignore (f : int -> int); f 2;;
Characters 15-19:
Warning 5: this function application is partial,
maybe some arguments are missing
val a : int = 3
ignore
次式が関数インタフェースint -> int
を有するので、警告5がトリガされます。
ignore (f 0)
およびif false then (ignore f 0)
が機能しますが、エレガントではありません。私はfに欠落した議論を提供したくありません。 ignore
の代替手段はありますか?
ignore
のモチベーションは、このダミーの例ではあまり明確ではありませんが、実際のプロジェクトでは他の警告を避けるために使用する必要があります。
お時間をいただきありがとうございます。
私はXY問題(http://xyproblem.info/)の匂いがします。本当のユースケースを説明できますか? – Drup
関数を呼び出さない場合は、最初にその関数を使用するのはなぜですか? – Bergi
実際の使用例は、ocaml_pluginを使用して実行時にOCamlコードをコンパイルする場合です。コード部分は 'f'を呼び出すこともあれば呼び出さないこともあります。私が 'f'をプラグインのライブラリとして使用したくないということを考えれば、' f'の定義にコードを追加することをお勧めします。 'f'を呼び出さなければ、コンパイラは文句を言うでしょう。 –