
Ross:
#define IOArity 2
From the sound of it, you're redoing the IO monad and that means changes to the concurrency code.
Just want to be sure to point out that, because we don't have preemptive concurrency, changes to the order threads get scheduled can cause previously working code to deadlock. So, please be very careful to check that concurrency is still useful. At a minimum this means that it is still possible to write code which implements the producer-consumer pattern. Better yet, the producer-consumer testcase in the testsuite would work unchanged. Better yet, the HGL would work unchanged. Better yet, the scheduling order would be completely unaffected (there are some tests for this in the testsuite). (The above ought to be unnecessary to say but changes to the scheduler are a large part of part of what went wrong when Hugs and the HGL were incompatible for so long a year or two back.) -- Alastair