Prelude> import qualified Data.Map as M Prelude M> let k = 0/0 in let v = 0 in M.lookup k (M.insert k v M.empty) == Just v False This one is not surprising because the presence of 0/0 destroys the total order of Double, so strictly speaking this should not have an Ord instance. Olaf