In everyday life the subtle ambiguities of identity and equality are seldom noticed because we make unconscious allowances and adjustments for them. In mathematics they cause a little more trouble, but the place where equality gets really queer is in the discrete, deterministic, and literal-minded little world of the digital computer. There, the simple act of saying that two things are “the same” can lead into surprisingly treacherous territory.
- Brian Hayes, "Identity Crisis"
What does it mean for two variables to be equal? This may seem like too obvious to be worth discussing. But consider floating-point NaNs, which are by definition not numerically equal to any other floating-point number, not even to themselves. Should arrays containing NaNs be considered equal to themselves? What does equality mean for arrays anyway? Should arrays be equal only if they point to the same memory locations, or is it "sufficiently equal" if all their elements are equal? (And what if the elements are NaNs?)
Jeff Bezanson, one of the co-founders of the Julia language, will demonstrate how notions of equality can differ subtly across programming languages, and explain the design decisions and differences between the three forms of equality supported in Julia (==, isequal, and is).