Or rather, why isn\'t (==) usable on every data type? Why do we have to derive Eq ourseleves? In other languages, such as Python, C++, and surely o
(==)
Eq
How do you compare functions? Or existential types? Or MVars?
There are incomparable types.
Edit: MVar is in Eq!
instance Eq (MVar a) where (MVar mvar1#) == (MVar mvar2#) = sameMVar# mvar1# mvar2#
But it takes a magic primop to make it so.