[Haskell] Incoherent instances can make ST monad unsound