Immutability explanation

Variable name != variable. Simplest example form the English language:

Buffalo buffalo Buffalo buffalo buffalo buffalo Buffalo buffalo

Even though these entries has the same “name” (are homonyms) each of them has different “binding” (meaning). By making variable name and variable itself the same you simplify things a lot. You can think about Elixir bindings in the same way you think about C preprocessor #define, let in Rust, let … in/where in Haskell. Wikipedia also states difference between these two terms.