Trying to relax after an unlucky day which started with a fender-bender... So, to take my mind away from today's unfortunate events I'm hacking some Haskell code tonight and playing around with the Haskell Par Monad.
I've been exploring various aspects of parallel programming for a while now, ranging from low level GPGPU (General-Purpose computation on Graphics Programming Units) using NVIDIA's CUDA and OpenCL to parallel functional programming using Haskell (also tried F#) and Monads like the Par Monad.
To understand the Par Monad, read the Parallel Haskell Tutorial presentation from last week's Commercial Users of Functional Programming conference, and try the tutorial code available on github there.
What fascinates me about the Par Monad is how it makes it so natural to bring typical Monad composition (watch this interview for a great intro to Monad composition) to a parallel program.
One day we'll be able to construct a parallel program as easily as assembling (think composing) Lego blocks (think logic components/blocks and Monads as connectors between them).
That day is not far away...