I highly recommend Simon Fowler's ECOOP 2017 lecture <a href="https://www.youtube.com/watch?v=lpbkIjjoMRk" rel="nofollow">https://www.youtube.com/watch?v=lpbkIjjoMRk</a><p>However, channels are best understood as Actors with put and get messages so that aChannel.put[x] puts x in aChannel and aChannel.get[ ] gets from aChannel. A channel of type T has the following interface:
Interface Channel<T>
put[T] -> Void,
get[ ] -> T<p>Actors can be categorically automatized, which means that up to a unique isomorphism, there is just one model that satisfies the axioms. In this way, Actors can be much more precisely defined in a general way than can be done using an extended lambda calculus as in Fowler's lecture.<p>Furthermore, a common misunderstanding is that an an Actor must have a mailbox, message queue, or event queue. There would be an infinite regress if any of these were required because since everything is an Actor, each of these would itself need a mailbox, message queue, or event queue. Instead, an Actor (e.g. a ReadersWriters scheduler) performs internal queuing when required. See <a href="https://www.amazon.com/Inconsistency-Robustness-Studies-Logic-Hewitt/dp/1848901593" rel="nofollow">https://www.amazon.com/Inconsistency-Robustness-Studies-Logi...</a><p>To get the latest, see my upcoming Code Mesh Keynote: <a href="https://plus.google.com/+CarlHewitt-StandardIoT/posts/BXSZ7Y25b4p" rel="nofollow">https://plus.google.com/+CarlHewitt-StandardIoT/posts/BXSZ7Y...</a>