[Haskell-cafe] Problem compiling a CGI script that needs to write to file during its execution

Jefferson Heard jefferson.r.heard at gmail.com
Tue Jul 29 12:14:52 EDT 2008


Beautiful, thank you.  That worked.

On Tue, Jul 29, 2008 at 12:07 PM, allan <a.d.clark at ed.ac.uk> wrote:
> Hi
>
> I had this same problem and I'm not sure my way is correct but I used 'Control.Monad.Trans.liftIO'
> Here is some code that I am using
>
> {-
>  The main program is pretty simple we just run the CGI action.
> -}
> main :: IO ()
> main =  Cgi.runCGI $ Cgi.handleErrors cgiMain
>
> {-
>  To be able to produce graphs which we can then display in the output
>  webpage we require that our main function, that is the one which creates
>  the page be in the IO monad.
> -}
> cgiMain :: CGI CGIResult
> cgiMain =
>  do visitInfo <- getAnalysisData
>     page      <- Monad.Trans.liftIO $ createPage visitInfo
>     Cgi.output $ Xhtml.renderHtml page
>
> createPage :: Visit -> IO Html
> createPage ..... blah stuff you don't care about
>
> getAnalysisData :: CGI Visit
>
> Visit is a data type I've made to hold the information obtained from the page.
>
> Hope this helps
> allan
>
>
> Jefferson Heard wrote:
>> Please ignore the obvious security holes, as this is not a script
>> meant for public consumption, but some internal testing and
>> prototyping.  I would like to write the result of my computation out
>> to a file inside of cgiMain, but the type of the monad inside cgiMain
>> is this odd CGIT IO CGIResult.  I tried using liftM on writeFile, but
>> it then complained that "newanns" was a string instead of a list of
>> strings, which I don't understand at all.  Here's the code:
>>
>> DeleteAnnotation.hs:
>>
> [snip code]
>
> --
> The University of Edinburgh is a charitable body, registered in
> Scotland, with registration number SC005336.
>
>



-- 
I try to take things like a crow; war and chaos don't always ruin a
picnic, they just mean you have to be careful what you swallow.

-- Jessica Edwards


More information about the Haskell-Cafe mailing list