could you explain "messages are first class" a bit more? what does that look like in Ruby?
Avdi Grimm has an explanation [0] more worthy than what I was managing to conjure up.
[0]: https://www.rubytapas.com/2012/10/17/episode-011-method-and-...
Erlang makes messages an even more central element, as the whole language is built around the concept of inboxes and asynchronous message passing (synchronous message passing being a special case).
Better type systems are in vogue now, for really good reasons. But I wish we don't ignore lots of good ideas from dynamic languages like Erlang or Mozart/Oz. Every time I open CTM or SICP I find great insights I had already forgotten.