はじめに 先日「関数型まつり2025」にて「成立するElixirの再束縛(再代入)可という選択 - Speaker Deck」という内容で発表させていただいたのですが、関連して、今回、いろいろな言語における値の不変性と変数の不変性について整理したいと思います。 値の不変性と変数の不変性 まず、しばしば混同されがちな「値の不変性」と「変数の不変性」の違いについてです。 値の不変性 (Immutable Value) こちらは、一度作成された値(データ)そのものが変更できない性質を指します。不変な値を変更しようとすると、実際には元の値を変更するのではなく、変更内容を反映した新しい値が作成されます。 変数の不変性 (Immutable Variable) これは、一度値を代入された変数に、別の値を再代入できない性質を指します。多くの言語で const (JavaScript, C++) や fi