Safe Haskell and abstraction