> 1. What implementations are supporting concurrent Haskell?
AFAIK only GHC and Hugs.
> What modules do I have to import to use it?
Read the Hugs-GHC documentation in hugs/doc
> Hugs claims to support it, but I can't figure out how to engage it.
It's on all the time. The implementation cost is so low that it's
not worth turning off.
> 2. Are Haskell processes/threads preemptive or cooperative?
GHC has preemptive threads.
Hugs has cooperative threads.
The merged Hugs-GHC runtime has premptive threads.
> Also, if you are using system
> threads then you get the additional benefit that some operating systems
> will automatically distribute them accross CPUs.
Hugs/GHC runs everything in a single OS thread.
There's no gain from having multiple threads because we'd have to
put a mutex round access to the heap - and Haskell programs spend
all their time touching the heap.
> 3. Do concurrent Haskell child-processes/threads survive the completion of
> main?
I've no idea.
> 3. The paper discusses a distributed implementation.
There is a parallel GHC implementation - but I know very little about
it. It tries to be totally transparent to the programmer.
AFAIK it can't handle machine/network failure in any useful way.
> 5. How is the Glasgow Parallel Haskell's different from concurrent
> Haskell?
I think the Concurrent Haskell paper makes this distinction:
o they use "concurrent" when talking about things which are visible
to the programmer - like interleaved execution.
o they use the word "parallel" when they want to talk about using multiple
machines to make things go faster (but with no semantic consequences)
Alastair