Violating IEEE without a good reason would introduce other problems, and I'm sure there'll be discussions around the place of exactly why nan has to be unequal to itself. Incidentally, Python's rule about NaN in containers isn't that it compares equal to itself, but that container membership is based on a two-part check of identity and then equality. Among other benefits, that allows automatic optimization of the common case of iterating over the keys and retrieving the values, since the keys will identity-match when you look them up. I think it'd be a good model for Pike to imitate.
The reason for NaN != NaN in IEEE is afaik the one I mentioned. Thanks for the clarification of what python does, I am not much of a python programmer.
I am not so sure about the semantics of id(). It seems to be basically the pointer value of the storage location of the variable. Are floating point values in python passed by reference? Are they objects? This would not work in pike, because floats (as ints) are passed by value.