私は現在、いくつかのClojureコードを読んでいます。このコードでは、渡されたレコードの数値のために、未初期化値の束がnil
となっています。Clojureにnil-punningの慣用的な代替手段はありますか?
多くのClojureライブラリtreat this as idiomaticがあります。つまり、それは受け入れられた大会です。
しかし、すべてのClojureコア関数がnil
を入力として扱うわけではないので、NullPointerException
にもつながります。 (彼らもそうはならない)。
リスクを緩和する方法として、他の言語では、NULLである場合に値をプロキシするためにMaybe
またはOption
という概念があります。これはClojure-but not very commonで可能です。
fnil
でいくつかのトリックを行うことはできますが、すべての問題を解決するわけではありません。
もう1つの方法は、初期化されていない値を:empty-value
のような記号に設定して、ユーザーがすべての処理コードでこのシナリオを明示的に処理するようにすることです。しかしこれは実際にはnil
からの大きなステップアップではありません - 実行時まですべてのシナリオ(他の人のコード内)を実際に発見しないからです。
私の質問は:Clojureにはnil-punningの慣用句がありますか?