
On Wed, Dec 07, 2005 at 04:45:52PM +0000, Tony Finch wrote:
The following paper seems relevant to this thread. Although it's written in the context of C and C++, it's relevant to any language that combines pre-emptive threads and imperative features.
I haven't read the whole paper yet, but I am not sure it applies to Concurrent Haskell. The paper is about introducing concurrency as a library to an imperative language. It seems to assume that the threads will communicate through ordinary variables modified in critical sections. But in Concurrent Haskell we don't modify ordinary variables (mutable variables don't exist in Haskell 98), but those supplied by the library. Citing the "Concurrent Haskell" paper: We give a semantics for Concurrent Haskell that is clearly stratified into a deterministic layer and a concurrency layer (Section 6). Existing reasoning techniques can be retained unmodified; for example, program transformations that preserve the correctness of a sequential Haskell program also preserve correctness of a Concurrent Haskell program. This is an unusual feature: more commonly, the non-determinism that arises from concurrency pervades the entire language. But can Concurrent Haskell be seen as a library? Best regards Tomasz -- I am searching for a programmer who is good at least in some of [Haskell, ML, C++, Linux, FreeBSD, math] for work in Warsaw, Poland