> 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



Reply via email to