なんらかの理由で NaN を吐き出すアルゴリズムがあります。当分の間、これらの悪い結果を除外したいと思います。後で問題を見つけてください。したがって、値が NaN であることを確認する必要があります。
NaN がそれ自体と等しくない唯一の値であるというトリックを使用できると思ったので、次の関数を書きました
(defn NaN?
"Test if this number is nan"
[x]
; Nan is the only value for which equality is false
(false? (= x x)))
これは私が尋ねるとうまくいきます(NaN? Double/NaN Double/NaN
)。ただし、値 NaN が何らかのデータ構造にあり (その場合のように)、何らかの意味ですべての準備が整っている場合、これは機能しません。例えば
(def test Double/Nan)
(NaN? test)
false を返します。