Talvez comparar ASTs não seja uma operação muito comum, mas me deparei com o seguinte que achei surpreendente. Eu acho que é até discutível que ==
deva ignorar os fatos de que os NaNs não são numericamente iguais a si mesmos, já que não é realmente uma comparação numérica.
julia> :(f($NaN)) == :(f($NaN))
false
julia> isequal(:(f($NaN)), :(f($NaN)))
false
Parece que precisamos de um método isequal
para Expr que chame isequal
recursivamente.
é até discutível que == deva ignorar os fatos de que NaNs não são numericamente iguais a si mesmos, pois não é realmente uma comparação numérica.
Literal NaN não é valor NaN, sim
Ponto muito bom. A solução real é provavelmente ==
em Exprs para usar isequal
para comparar elementos.
Comentários muito úteis
Literal NaN não é valor NaN, sim