Pattern guards
Ross Paterson
ross at soi.city.ac.uk
Sun Oct 1 20:12:58 EDT 2006
On Sun, Oct 01, 2006 at 02:08:35AM +0200, Yitzchak Gale wrote:
> An important clarification: the main monad at work
> here is the Exit monad. The "bind" notation in a
> pattern guard is just an obfuscated Exit monad.
> However, in many simple examples, the Maybe monad
> can be used as a special case of the Exit monad.
You don't use >>=, just >>. Similarly Exit is used only in the form
Exit e (), which is equivalent to Maybe e, i.e. if we define
exitMaybe :: Exit e () -> Maybe e
exitMaybe (Continue _) = Nothing
exitMaybe (Exit e) = Just e
then we have
runExit m = fromJust (exitMaybe m)
exitMaybe (x >> y) = exitMaybe x `mplus` exitMaybe y
exitMaybe (maybeExit m) = m
so we can replace the Exit monad with Maybe.
More information about the Haskell-prime
mailing list