technology from back to front

Writing AJAX applications in Haskell

How easy is it to write an [AJAX](
application in [Haskell]( Very easy
indeed. Here’s a little example of an AJAX server that echoes
[JSON]( requests:

module Main where

import Data.Maybe (fromJust)
import JSON
import Network.NewCGI

jsonEcho :: CGI CGIResult
jsonEcho = do jsonString <- getInput "json"
setHeader “Content-type” “application/x-javascript”
output $ (stringify . fromJust . parse . fromJust) jsonString

main = runCGI jsonEcho

To get this to compile you need the following haskell libraries: [Fast
Packed Strings]( (needed by
haskell-cgi), [XHTML
combinators]( (needed
by haskell-cgi),
and [JSON.hs](

The resulting executable can be installed on any web server that
supports cgi scripts. For my tests I configured apache with cgi
execution enabled in user directories. You can download the little
example app [here](/downloads/haskell-ajax.tar.gz). The client code employs the
[json]( and
[prototype]( Javascript libraries.

The JSON.hs file included in this distribution is a slightly modified
version of the one listed above which adds support for Ints.

  1. Very interesting indeed

  2. Short, sweet, and timely. I was just looking for a JSON library for Haskell, as a matter of fact…

  3. Robin Bate Boerop
    on 12/10/07 at 3:21 pm

    Your article is well focused and densely packed with relevant information. Useful. Thank you.


9 + five =

2000-14 LShift Ltd, 1st Floor, Hoxton Point, 6 Rufus Street, London, N1 6PE, UK+44 (0)20 7729 7060   Contact us