The following code solves exactly the problem of implementing
(restricted) MonadPlus in terms of Data.Set:

        http://okmij.org/ftp/Haskell/DoRestrictedM.hs

The code is written to demonstrate the do-notation. We write the
monadic code as usual:

> test1s_do () = do
>   x <- return "a"
>   return $ "b" ++ x

and then instantiate it for Maybe String:

> test1sr_do :: Maybe String
> test1sr_do = unRM $ test1s_do ()
> -- Just "ba"

or for Data.Set:

> test2sr_do :: Set.Set String
> test2sr_do = unSM $ test1s_do ()
> -- fromList ["ba"]

It seems GHC 6.10 will support the do-notation even for the
generalized monads.

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to