> single-assignment "variables,"
It's a pet peeve of mine to see people disparage the phrase "immutable variable" as a contradiction. A given variable's value can
vary each time its function is called, or each time its program is run, without ever needing to be mutated. In fact, in practice
most variables don't end up requiring mutation, which was a surprise for me coming from traditional imperative languages (not to say that mutation isn't valuable, but it makes more sense for your language to make variables immutable by default rather than mutable by default).
</rant>