
Am Donnerstag, 24. November 2005 21:19 schrieben Sie:
[...]
Here I want to correct a statement I made previously about:
mplus m1 m2 = do ... ~(a,s') <- lift (mplus m1' m2')
In one of my emails to the thread I mentioned m1/m2 and m1'/m2' could be different Monads so mplus works differently (so that this is not exactly a recusrive data structure), but even so the lazy pattern works. The problem is when m1/m2 and m1'/m2' are of the same Monad type, then the problem of recursive definition comes up and this is the place lazy patterns are particularly useful.
They cannot belong to the same monad. If s is the state type and m1' and m2' belong to the monad m then m1 and m2 belong to the monad StateT s m.
Thanks, Fan
Best wishes, Wolfgang