|
|
|
|
|
by tylerhou
2604 days ago
|
|
In the error monad above, computeSecond will not be called if computeFirst failed. But in other monads (which have the same syntax) computeSecond MAY be called depending on the rules of composition. return is a bit of a misnomer in Haskell -- it really means "wrap this value in the monad supplied by the context." So as other commenters have mentioned, f(...) cannot fail. Non-monadic Haskell functions never use return. If f could fail and you indeed wanted to propagate its error if it did fail, you could write the code as do first <- computeFirst
second <- computeSecond
f first second
|
|