ElixirはErlang VM (BEAM) の上で動作するRubyライクは文法をもつ関数型言語として知られています。
Erlangと同様に値は全てイミュータブルですが、Erlangが再束縛(再代入)不可である一方、Elixirは再束縛(再代入)可という異なるアプローチを採用しています。
再束縛(再代入)の可否を選択できる言語においては、正当な理由がない限り再束縛(再代入)不可の利用が推奨されており、Elixirのアプローチは一見悪手のように見えるかもしれません。
なぜElixirの再束縛(再代入)可という選択が悪くない戦略なのかについて、関数型言語の特性や、束縛、代入、ミュータブル、イミュータブル等の整理を通じて紐解いてみたいと思います。