
@Francesco, yes, it completely answers my questions. Thank you very much
for clarification!! I got it.
В Thu, 25 May 2017 20:44:57 +0200
Francesco Ariis
On Thu, May 25, 2017 at 07:02:58PM +0300, Baa wrote:
В Thu, 25 May 2017 17:43:49 +0200
Should be as easy as:
import Control.Monad.List import Control.Monad.Writer
type Prova = ListT (Writer String) Int
Yes! And this is the source of my questions.. 1) How to call it? 2) What does mean to provide argument of type ".. Writer .."? As result, it's good: you can run it with "runWriter", but what is "writer" in input argument? Fake writer (which is ignoring)?
I am not sure for question #1. If we look at the constructor of ListT (`runListT :: m [a]`) and MonadWriter (`(a, w)`) and we compose the two we get:
([a], w) -- or ([Integer], String) in our example -- e.g. ListT (writer ([1,2], "ciao")) <-- to construct
No idea what is the correct name of this critter.
As we can see by running it, the argument in `fn` (both the list part and the string part) is not ignored:
λ> fn $ ListT (writer ([1,2], "ciao")) ListT (WriterT (Identity ([3],"ciaohey baby")))
Does this answer your questions? _______________________________________________ Beginners mailing list Beginners@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners