[Haskell-beginners] How to construct complex string

martin martin.drautzburg at web.de
Fri Aug 9 19:41:57 CEST 2013


Am 08/09/2013 12:18 AM, schrieb Stephen Tetley:
> Hi Martin

> instance Monad Dot where
>   return a = Dot $ \ uq -> ([],uq,a)
>   m >>= k  = Dot $ \ uq -> case unDot m uq of
>                (g1,uq',r) -> case unDot (k r) uq' of
>                        (g2,uq2,r2) -> (g1 ++ g2,uq2,r2)

Thanks Stephen

I have a related question to the one above: The "case .. of" is just
required to bind the variables left of the "->", as there is only one
alternative, right?

I tried to rewrite this using "where" and was bitten badly, because
inside the "where" uq would not be defined. I found a way to write (a
simplified version of) this using "let .. in", but I had to put the
entire "let .. in" after the "->" in the lambda and it ended up equally
ugly.

So my question is: is "case .. of" the the "where" of lambdas? Are there
alternatives? I find this confusing because "case .. of" looks like a
decision between alternatives, rather than a way to bind variables.




More information about the Beginners mailing list