ASTを比較することはあまり一般的ではないかもしれませんが、私は驚くべきことに次のことに気づきました。 ==
は、実際には数値比較ではないため、NaNが数値的に等しくないという事実を無視する必要があることも議論の余地があると思います。
julia> :(f($NaN)) == :(f($NaN))
false
julia> isequal(:(f($NaN)), :(f($NaN)))
false
isequal
再帰的に呼び出すExprのisequal
メソッドが必要なようです。
==は、実際には数値比較ではないため、NaNが数値的に等しくないという事実を無視する必要があることも議論の余地があります。
NaNリテラルはNaN値ではありません、うん
とても良い点です。 実際の解決策は、おそらくExprsの==
がisequal
を使用して要素を比較することです。
最も参考になるコメント
NaNリテラルはNaN値ではありません、うん