Rather than commenting on the code provided, here are the two biggest wins I've had recently with Haskell.  Both of these are part of a physical modeling project.

1) uu-parsinglib - simple to use and automatic error correction.  I really, really enjoy working with this library, and how often can you say that?

2) STM - the original design reads a system and all inputs from a config file, then runs the system and produces output.  I wanted to build the system from a file but collect inputs and produce output in real-time.  After a few small adjustments, a few TVar's and a TMVar, and three forkIO's, it was working.

One concern is that the engine (which is computation-intensive) shouldn't block waiting for input, it should just continue on and catch up later.  With STM, this can be expressed as:

atomically $ getInputs inputTVar `orElse` return ()

and there's the desired behavior.  Couldn't be easier.

John


From: Blake Rain <blake.rain@gmail.com>

Dear Haskellers,

I thought I'd take some time to share something of my weekend with
you  all.   Not because  of  anything new,  but  because  it is  a
feel-good example  of Haskell  being win. A  good read  for Monday
morning, perhaps.

<code snipped>
 
Now over to you guys! What experiences have you had which make you
glad you use Haskell? Anything make you smile recently?

- Blake