Pergunta

What is the use of Error typeclass:

class Error a where
    noMsg :: a
    strMsg :: String -> a

There is also another typeclass named MonadError which makes sense in monadic computation. But where is Error used ? I haven't seen the usage of noMsg and strMsg yet anywhere.

Foi útil?

Solução

For historical reasons, the Monad m typeclass includes fail :: String -> m a. For Either e to implement such a method, we must have a way to turn a String into an e; the Error typeclass was invented to allow this via strMsg. The addition of noMsg is an additional convenience.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top