- Pure Functional
- Dynamically Typed
- Eager (Applicative Order)
- Fault tolerant
The big ideas of Erlang are:
- Threads are wrong abstractions.
- BigIdeas/PatternMatching Pattern-matching on receive.
- Fault tolerance (shit happens).
Go modeled concurrent I/O primitives on the same principles (goroutines, first-class channels, explicit select statement in the language)
Scala took principles of The Actor Model and mostly functional implementation (as a library), but static typing turned everything into a cluttered, bloated bureaucratic mess.