Network.CGI changes

Frederik Eaton frederik at
Fri Jan 25 02:53:20 EST 2008

Hi Bjorn,

Thank you, that is good to hear. Thank you for giving us the better
API as well.


On Thu, Jan 24, 2008 at 11:03:58PM +0100, Bjorn Bringert wrote:
> Hi Frederik,
> I agree with your comments about the headaches of Haskell library stability. I made the 
> change because it seemed like the old library had no users. I should put my money where my 
> mouth is, Network.CGI.Compat is now back in the cgi package.
> /Bjorn
> On Jan 22, 2008, at 18:28 , Frederik Eaton wrote:
> >Hi Bjorn,
> >
> >Well, I don't know what the solution is. As I have said, I think it
> >would be best to keep Network.CGI.Compat. That way, users of the old
> >module just have to change the module name, plus they don't have to
> >hack cgi-compat to get it to compile when cgi is already working.
> >
> >A typical project of mine uses 10 or more packages, and something that
> >makes me reluctant to use Haskell is the experience that after a few
> >years I will end up having to maintain separate versions of
> >significant numbers of those packages if I want something I wrote to
> >stay working. Haskell is supposed to be good for writing large
> >projects, but large projects need stable libraries or they become a
> >maintenance nightmare. It's rather worrying to see that people seem to
> >think that if I don't have time to participate actively in the mailing
> >lists or upload stuff to hackage, then my code doesn't exist...
> >
> >Maybe there is a high cost to keeping Network.CGI.Compat in the cgi
> >package, but I don't see any reason other than an aesthetics, which
> >seems like less of a priority than backwards compatibility.
> >
> >Frederik
> >
> >On Tue, Jan 22, 2008 at 05:31:01PM +0100, Björn Bringert wrote:
> >>Hi Frederik,
> >>
> >>(I'm CC:ing the libraries list, so that anyone who wants to have Network.CGI.Compat back 
> >>in
> >>the cgi package can shout.)
> >>
> >>That exact module actually used to exist in the cgi package as well (it implemented the
> >>complete API of the old Network.CGI), but after a few releases I removed it since it 
> >>didn't
> >>seem to have any users. That was quite a long time ago, and you are the first person to
> >>complain.
> >>
> >>The purpose of cgi-compat is actually not to provide Network.CGI.Compat, but rather to be
> >>installable on older GHC versions, hence the main module name Network.NewCGI.
> >>
> >>I'm not sure if there is sufficient demand for adding Network.CGI.Compat back into the 
> >>cgi
> >>package. The old Network.CGI seemed to have very few users, due to to it's restrictions.
> >>You can always get Network.CGI.Compat from here, and include it in your program:
> >>
> >>
> >>/Björn
> >>
> >>Frederik Eaton wrote:
> >>>Dear Johannes,
> >>>Thanks, that works for me.
> >>>Bjorn, perhaps it would be easier to put these five lines in a module
> >>>(Network.CGI.Compat?) in the new package, rather than having people
> >>>maintain and download a separate cgi-compat package? Perhaps the two
> >>>other functions in the old CGI interface can be implemented in terms
> >>>of the new API as well?
> >>>Best wishes,
> >>>Frederik
> >>>On Mon, Jan 21, 2008 at 09:50:46AM +0100, Johannes Waldmann wrote:
> >>>>If you need the old "wrapper" function, then use something like this:
> >>>>
> >>>>wrapper :: ([(String,String)] -> IO Html) -> IO ()
> >>>>wrapper f = runCGI $ do
> >>>>
> >>>>   e <- getInputs
> >>>>   a <- lift $ f $ e
> >>>>   output $ renderHtml a
> >>>>
> >>>>best regards, Johannes Waldmann.
> >>>>
> >>
> >
> >--
> >


More information about the Libraries mailing list