Tal vez comparar AST no sea una operación muy común, pero encontré lo siguiente que me sorprendió. Creo que incluso es discutible que ==
debería ignorar el hecho de que los NaN no son numéricamente iguales a ellos mismos, ya que en realidad no es una comparación numérica.
julia> :(f($NaN)) == :(f($NaN))
false
julia> isequal(:(f($NaN)), :(f($NaN)))
false
Parece que necesitamos un método isequal
para Expr que llame a isequal
recursivamente.
incluso es discutible que == debería ignorar el hecho de que los NaN no son numéricamente iguales a ellos mismos, ya que en realidad no es una comparación numérica.
El literal NaN no es un valor NaN, sí
Muy buen punto. La solución real es probablemente ==
en Exprs para usar isequal
para comparar elementos.
Comentario más útil
El literal NaN no es un valor NaN, sí