Hi folks. Take a look at this: render :: IOArray Point Colour -> (Point -> Colour) -> IO () render framebuffer fn = mapM_ (\p -> writeArray framebuffer p (fn p)) all_points How do I alter this to compute fn in multiple threads in parallel? (As you can see from the type signature, the calculation is independent for each pixel.) Thanks.