darcs patch: forkChild, waitForChild, parIO, timeout

Einar Karttunen ekarttun at cs.helsinki.fi
Fri Nov 3 07:27:59 EST 2006

On 02.11 22:29, Peter Simons wrote:
> I see you point. It is obvious that an implementation with two
> forkIOs is probably slower than an implementation with one. I
> would love to implement timeout the way you did, but my problem
> is that it doesn't feel right to depend on Data.Typeable in
> Control.Concurrent. I don't want to define a new dynamic
> exception type in that module.

Data.Typeable is only used for the non-Maybe variabts of the

And Control.Concurrent already uses Data.Typeable:

Control.Concurrent <- Control.Concurrent.MVar
C.C.MVar           <- Control.Exception
C.Exception        <- Data.Dynamic
Data.Dynamic       <- Data.Typeable

> One solution could be to move timeout to a different module. Do
> you have a suggestion? Where would you put your code?

Control.Concurrent.TimeOut - also do timeouts make sense for
implementations only supporting co-operative concurrency?

> ..., forces the programmer to deal with a timeout condition
> in-place. My impression is that code reliability is furthered by
> making error conditions explicit, so I tend to prefer that kind
> of signature. It is not a strong preference, however.

I just provided both Maybe and non-Maybe and let the programmer
select the one they prefer.

- Einar Karttunen 

More information about the Libraries mailing list