[Haskell-cafe] Indentation Creep
Claus Reinke
claus.reinke at talk21.com
Fri Jul 13 19:59:33 EDT 2007
> is there Haskellmagic that I still need to learn?
one bit of magic, coming right up!-) of course, we haskellers are
the lazy types, and if none of that helps, some Monad often does.
in ghci or hugs, try ':browse Data.Maybe' and ':info Maybe'.
in particular, 'case . of Nothing -> . ; Just . -> .' calls for 'maybe',
and nested chains of such cases call for 'Monad Maybe' and,
possibly, 'MonadPlus Maybe' (the latter from 'Control.Monad').
consider these two (try unfolding the definitions, and compare
with your code):
maybe (error "nothing") id (lookup False [])
do { it <- lookup False []; return it }`mplus` return 42
hmm. now, how do i point to the source for that? anyway, here
it is:
instance Monad Maybe where
(Just x) >>= k = k x
Nothing >>= k = Nothing
return = Just
fail s = Nothing
instance MonadPlus Maybe where
mzero = Nothing
Nothing `mplus` ys = ys
xs `mplus` ys = xs
hth,
claus
More information about the Haskell-Cafe
mailing list