[Haskell-beginners] basic threading

Thomas Davie tom.davie at gmail.com
Wed Mar 4 08:34:47 EST 2009

On 4 Mar 2009, at 13:33, Michael Easter wrote:

> hi again everyone,
> I am giving a tech talk soon, and aspire to show an example from  
> Chapter 28 of RWH on the STM monad.
> My example is just a watered down version of the "transfer wealth"  
> example in the book.  However it is
> single threaded.
> Q: is there an "easy" example of illustrating 2 threads that do  
> something (trivial is fine)? I believe that the book constructs a
> thread library/manager of sorts but I wonder if there is something  
> easier.
> Though I'm not sure how to square this with my example, for now I'd  
> love to see an example of starting up
> 2 threads that do something and block until a keystroke is entered  
> in the terminal.
> My apologies if this is too vague or too much "can you do my  
> homework?" !

Certainly, here's a nice one:

map _ [] = []
map f (x:xs) = f x : map f xs

parMap _ [] = []
parMap f (x:xs) = let fx = f x in fx `pseq` fx : map f xs

I realise this isn't what you expected – it's not the STM monad – but  
it *is* basic threading, far more basic, and far nicer than firing up  
monads and communication between threads.


More information about the Beginners mailing list