[Haskell-beginners] Learning StateT

Tim Baumgartner baumgartner.tim at googlemail.com
Sat Nov 27 04:22:39 EST 2010

Hi Haskellers,

in order to learn Monad Transformers, I'm trying to write a simple
calculator that has an internal state of type Calc that is modified
after each line the user enters. I started like this:

main :: IO ()
handleLine :: StateT Calc IO Bool   -- return's False in order to exit

main uses runState in order to extract the action it needs from the
transformer. Up to this point, it works fine. But in order to separate
I/O and parsing, I'd prefer to have another function

processInput :: String -> State Calc (Maybe String)

that updates the internal state and returns either a String that
should be printed or Nothing in order to exit. Trying to do that, I
didn't see another possibility but to call runState again from inside
handleLine. I guess there is a better solution. Can you help?

Thanks in advance

More information about the Beginners mailing list