Peut-être que la comparaison des AST n'est pas une opération très courante, mais je suis tombé sur ce qui suit que j'ai trouvé surprenant. Je pense que l'on peut même soutenir que ==
devrait ignorer le fait que les NaN ne sont pas numériquement égaux à eux-mêmes car ce n'est pas vraiment une comparaison numérique.
julia> :(f($NaN)) == :(f($NaN))
false
julia> isequal(:(f($NaN)), :(f($NaN)))
false
Il semble que nous ayons besoin d'une méthode isequal
pour Expr qui appelle isequal
manière récursive.
on peut même soutenir que == devrait ignorer le fait que les NaN ne sont pas numériquement égaux à eux-mêmes car ce n'est pas vraiment une comparaison numérique.
Le littéral NaN n'est pas la valeur NaN, oui
Très bon point. La vraie solution est probablement que ==
sur Exprs utilise isequal
pour comparer les éléments.
Commentaire le plus utile
Le littéral NaN n'est pas la valeur NaN, oui