[Haskell-cafe] Haskell Data Structure design

Guru Devanla gurudev.devanla at gmail.com
Sat Jul 9 04:56:37 UTC 2016


(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!


On Fri, Jul 8, 2016 at 7:55 PM, <amindfv at gmail.com> wrote:

> On Fri, Jul 8, 2016 at 9:57 PM, Guru Devanla <gurudev.devanla at 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 at 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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20160708/6a8ed513/attachment.html>

More information about the Haskell-Cafe mailing list