The Erlang Rationale (2008) [pdf]
Erlang is an amazing language, with many great design decisions! For example, quoting from the paper:<p><i>“Very early on we decided that strings were lists. This was partly environment as many
of the languages we were using, such as Prolog, use lists and partly practical as lists
are a very powerful data type.”</i><p>Lists are extremely convenient to handle in Erlang, and they are an ideal representation of text for many purposes. This convenient representation can also be implemented efficiently, in such a way that compact UTF-8 based encoding is used internally, while the string appears as a list to programmers. Two recent Prolog systems, Scryer Prolog and Trealla Prolog, do this already. It is to be hoped that future Erlang and also Haskell implementations will adopt this idea to combine convenience with efficiency, eliminating the need for additional types to compactly represent binary objects, and allowing fast reading from files via mmap.<p>In university, we had a distributed systems class with many very involved exercises. They were involved mostly because we had to use Java: Out of interest, I also solved the exercises in Erlang, and that usually allowed much shorter and more convenient solutions.