I have a question to the State Monad or Monads in general - I'am not sure. Lets assume I have functions to transform strings. I can use the State Monad as follows:
strTrans :: String -> String strTrans s = s ++ s
f :: State String () f = do put "hallo" modify strTrans modify strTrans' ...
Up to this point everything is clear. Now I have also functions to map from (a, String) -> (a,String). I could write:
modifyT :: ((a, String) -> (a, String)) -> a -> State String a modifyT trans a = do str <- get let (a', str') = trans (a, str) put str' return a'
f :: State String ()
f = do put "hallo"
modify strTrans
i <- modifyT strIntTrans 4 -- strIntTrans :: (Int, String) -> (Int, String)
i' <- modifyT strIntTrans i
...
But this is obviously awkward. How can I stick two Monads in each other? I could't figure out how to use StateT. Any help would be appreciated.
Thanks! Georg
_______________________________________________ Haskell-Cafe mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/haskell-cafe