Good read, and I just read this post while attending Erlang Factory in SF, in the middle of a talk about Lists and Strings :)
I asked the teacher about your comment on String manipulation. Yes, it is pretty in-efficient. There are libraries to make manipulation easier, and, you can always go down to binary types, which is much more performant.
We chose to use Erlang for a variety of reasons, and String manipulation isn't a problem for us (it's definitely a pre-mature optimization point (for us) at the moment).
Which is efficient for some uses (i.e. iterating over UTF32 characters) and inefficient for others (high memory usage).
You can always use:
* atoms - for interned strings or enums
* binaries - for memory efficiency (i.e. UTF8 byte sequences)
* IO-lists - for efficient appending and IO.
What I would like is a per-module compiler directive/pragma, which will turn every "string" into <<"string">>, while @"string" will remain syntax sugar for list.
I asked the teacher about your comment on String manipulation. Yes, it is pretty in-efficient. There are libraries to make manipulation easier, and, you can always go down to binary types, which is much more performant.
We chose to use Erlang for a variety of reasons, and String manipulation isn't a problem for us (it's definitely a pre-mature optimization point (for us) at the moment).