Hi Michael, Let me look tomorrow morning. In any case, many thanks! Kind regards, Vasili On Tue, Jun 2, 2009 at 11:12 PM, Michael Snoyman <michael@snoyman.com>wrote:
remLookupFwd :: (ReVars m t) => SimplRe t -> ReM m t (ReInfo t) remLookupFwd re = do fwd <- gets resFwdMap -- let { Just reinfo = M.lookup fwd re } -- PROBLEM reinfo <- liftMaybe $ M.lookup re fwd -- PROBLEM return reinfo
liftMaybe :: Monad m => Maybe a -> m a liftMaybe Nothing = fail "Nothing" liftMaybe (Just x) = return x
I made two changes:
1. You had the arguments to M.lookup backwards. 2. lookup does not return any generalized Monad, just Maybe (I think that should be changed). I added the simple liftMaybe function to convert the Maybe result into something that will work with your state monad.
Michael