Данные в Elixir не могут быть изменены.
Каждая функция возвращает новую версию входных данных. Необходимо ввести новые переменные для хранения измененных значений или заново привязать их к тому же символьному имени.
В любом случае, результат будет помещен в другую область памяти. Некоторые данные будут скопированы, но в основном старая и новая версии будут разделять общую память.
Правильно ли я понимаю, что в куче просто создастся новый участок памяти, который будет указывать на переменную, вместо того чтобы изменить значение в прошлом участке памяти? Просто немного не до конца понимаю, как это все работает. Можете подсказать пару статей?