Brandon,

 

Thanks you for your advice.

I want to add CGI support to  a program that writes to a file, but has no network access. The old code uses a WriterT with IO in it. Adding another monad to the stack with IO to the network, is a bit too difficult for a beginner like me.

The old code returns IO [String] ([String] = list of status messages). It is a bit annoying that I have to adapt the old code. I just want to grab the status messages and convert them to html and write them to the network.

I wonder, do you always have to create a monadtransformer if your program uses 2 kinds of IO?

 

Kees

 

 

Van: Beginners [mailto:beginners-bounces@haskell.org] Namens Brandon Allbery
Verzonden: maandag 14 oktober 2013 17:03
Aan: The Haskell-Beginners Mailing List - Discussion of primarily beginner-level topics related to Haskell
Onderwerp: Re: [Haskell-beginners] monads do not fit together?

 

On Mon, Oct 14, 2013 at 10:58 AM, Kees Bleijenberg <k.bleijenberg@lijbrandt.nl> wrote:

I get the same message (Couldn't match expected type `CGIT IO a0'   with actual type `IO [String]'). I think I do understand where this message is coming from. But what can I do to fix it?

 

For now, you just correct the type of runRefreshFirewall; it should be

 

    runRefreshFirewall :: String -> CGIT IO [String]

 

If you are intending to run actual IO actions in the real thing, you'll need to use liftIO to "reach" the IO embedded in the CGIT IO a.

 

--

brandon s allbery kf8nh                               sine nomine associates

allbery.b@gmail.com                                  ballbery@sinenomine.net

unix, openafs, kerberos, infrastructure, xmonad        http://sinenomine.net