
Hi, I'm interested in working on a library for a stateful web browsing in Haskell during Google Summer of Code. The basic idea is described at http://hackage.haskell.org/trac/summer-of-code/ticket/1107. WWW::Mechanize is a ready to use library written in Perl, though I used python's mechanize when I wrote some simple scripts (http://wwwsearch.sourceforge.net/mechanize/), which provides much cleaner interface. Anyway, it gives simple and convenient way to retreive web-sites, to handle cookies, history and to process retrieved content and forms. There are basics of it Network.Browser module from Haskell's HTTP library (http://hackage.haskell.org/packages/archive/HTTP/3001.0.4/doc/html/Network-B...), but it's ugly (uses unsafePerformIO for error reporting) and lacks a greater part of needed functionality. My aim is to greatly improve Network.Browser module and to make coding small scripts with it in more functional way possible. At this moment it uses BrowserAction state monad. Though, the deadline is approaching, I still seek some ways to improve my proposal. So here are the questions: are there any other data structures that will make programming with this library more convenient, besides simple state monad? Should we contrive more sophisticated system with other other separate data structures? What other improvements you'd like to see? Thanks in advance for any advice. -- Max.