learning parallel and concurrent programming in haskell