[Haskell] Exceptions in types and exception-free programming