In the  Is currying monadic? post the author says:

This is again a nested expression. So I wondered if you could again "flatten" it with a monadic do block:
    let add3 = do
a <- get first parameter
b <- get second parameter
c <- get third parameter

return a+b+c
OK, so I "know" that functions in Haskell (which uses currying for functions as a general rule) are the "Reader monad". But I don't understand it well enough to know if that means you can use Reader to implement the above...

(I don't understand Reader at all in fact. I must bang my head against it again, but I find it very confusing - how the monad is represented, what the functions are, and how they get magically applied.)


Any idea what he is talking about?

Thanks

Daryoush