Thanks, I'll check them out.

In the meantime, please look at <>.  It contains both a select macro and a select* procedure.  There is also a go macro, which is just a convenience.  Otherwise it is procedural.

On Thu, Mar 5, 2020 at 5:16 PM Göran Weinholt <> wrote:
John Cowan <> writes:

> On Thu, Mar 5, 2020 at 8:08 AM Marc Feeley <> wrote:
>> FuturesCowan also drops mutexes and condition variables. How will the
>> threads coordinate their actions without this?
> It hides them so that threads can be standardized even though thread
> coordination is still under consideration. Specifically, I am going to
> propose go-channels as the standard coordination interface, using
> conditions and mutexes under the table. I don't yet have a proposal,
> but I want to be able to standardize threads first.

In Golang, operations on channels are most commonly hidden behind syntax
such as <- and select. But since this is Scheme, I think that the
coordination operations should be first class. This would be good
because this allows them to be composed, be stored in data structures,
etc., which is something we all enjoy today with closures and

Might I suggest finding inspiration in Concurrent ML instead of Golang.

Here are some instances of Scheme and Concurrent ML together:

"a new concurrent ml"

CML for GNU Guile <>

CML in Loko Scheme <>

CML in Scheme 48

CML in Scheme <>


Göran Weinholt   |
Debian developer | 73 de SA6CJK