也许比较 AST 不是一个很常见的操作,但我遇到了以下令我感到惊讶的事情。 我认为==
应该忽略 NaN 在数值上不等于它们自己的事实甚至是有争议的,因为它不是真正的数值比较。
julia> :(f($NaN)) == :(f($NaN))
false
julia> isequal(:(f($NaN)), :(f($NaN)))
false
看起来我们需要一个isequal
方法来递归调用isequal
的 Expr。
甚至有争议的是 == 应该忽略 NaN 在数值上不等于它们自己的事实,因为它不是真正的数值比较。
NaN 文字不是 NaN 值,是的
很好的一点。 真正的解决方案可能是==
在 Exprs 上使用isequal
来比较元素。
最有用的评论
NaN 文字不是 NaN 值,是的