William/Tom, (1) Yes, looking into lens and re-factoring my current experimental project in lens will be my next iteration. For now, I plan not to spend time on it. (2) Agreed. Not sure how I missed that. (3) I see how foldM works now. I missed the point that foldM not only is a `map` but also does a `sequence` after that. I got stuck earlier, thinking I will end up with a list of state monads. The sequence steps executes this monadic action. But, how can I do a foldM in a state monad. Say, I need to map over a list of students and add up all their fees, can I get away not `evalState` inside the foldM step function? Thanks. this is very exciting as I keep simplifying my code! Guru On Fri, Jul 8, 2016 at 7:55 PM, <amindfv@gmail.com> wrote:
On Fri, Jul 8, 2016 at 9:57 PM, Guru Devanla <gurudev.devanla@gmail.com> wrote:
1. I see that almost in every function I deal with state, I have e <- get
, expression in the begining. I always ending up having to use the state to query for different values. I guess this is OK.
El 8 jul 2016, a las 22:07, William Yager <will.yager@gmail.com> escribió:
For #1, look into using the Lens library's support for the State monad. You can often avoid doing a get, and instead write things like `fees += 5`, which will add 5 to the field in the state called "fees".
Lens is a pretty heavy extra thing for a beginner to have to learn -- you'll do fine with the 'modify' function:
modify :: (s -> s) -> State s ()
So instead of writing:
do s <- get put (s + 5)
You say:
modify (+5)
Tom