Erlang изначально был реализован в Prolog, который также не использует изменяемые структуры данных (хотя некоторые диалекты используют).Так что все началось без них.Это делает реализацию во время выполнения проще и быстрее (в частности, сборку мусора).
Таким образом, добавление изменяемых структур данных потребует больших усилий, может привести к ошибкам, и программисты Erlang почти по определению по крайней мере готовы жить без них.,
Многие на самом деле считают их отсутствие положительным благом: меньше заботятся об идентичности объекта, нет необходимости защищающего копирования, потому что вы не знаете, собирается ли какой-то другой фрагмент кода изменить переданные вами данные (илиможно изменить позже, чтобы изменить его) и т. д.
Это отсутствие означает, что Erlang довольно непригоден для использования в некоторых областях (например, в высокопроизводительных научных вычислениях), по крайней мере, в качестве основного языка.Но опять же, это означает, что никто в этих доменах не собирается использовать Erlang в первую очередь, и поэтому нет особого стимула сделать его пригодным для использования за счет того, что существующие пользователи будут недовольны.
Я помню, как видел список рассылкипост Джо Армстронга довольно давно (который я не смог найти при быстром поиске сейчас) о том, что он изначально планировал добавлять изменяемые переменные, когда они ему понадобятся ... за исключением того, что он никогда этого не делал, и производительность была хорошейхватит на все, для чего он использовал Эрланга.