The "strMsg" method is used to implement the "fail" method in the
resulting method, and calls to "fail" might be inserted into your code
even if you don't explicitly call it. An example in GHCi:
Prelude> :m + Control.Monad.Error
Prelude Control.Monad.Error> do { Just x <- return Nothing ; return
x } :: Either String Int
Left "Pattern match failure in do expression at <interactive>:1:5-8"
Note that in the "Either String" monad, "failStr" is equal to "Left".
On 2010 July 27, at 15:32, Gerald Gutierrez wrote:
Reading the Control.Monad.Error documentation, I see that the Error
class has noMsg and strMsg as its only two functions.
Now, I understand that you can define your own Error instances such
as in example 1 of the documentation, so why the need to always
support strings via noMsg/strMsg ? What uses these? And if in my
code, I will never throw an error with a string, am I supposed to
implement these functions and then ignore them?
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe