
25 Mar
2008
25 Mar
'08
4:19 a.m.
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.