From Code Mesh 2017
How should we write concurrent, reactive applications? In Go, you might say, using its abstractions for channels. Channels are a big win over old-school programming using locks, and an improvement over simple futures.
However, the epitome of elegance and functionality in concurrent programming is a mostly-forgotten system called Concurrent ML (CML) from the late 1980s. CML, despite its name, is not tied to ML and fortunately survives in a few language implementations to this day. CML programs are a singular pleasure to both read and write, and also easy to get correct. CML generalizes channels to events, making CML abstractions inherently composable.
This talk will show how you can benefit from Concurrent ML today, and look beyond to the connections to Erlang, Goroutines, and modern Reactive Programming implementations.