I feel like it’s like pointers.
“Variable” refers to the label, i.e. a box that can contain anything (like *ptr is a pointer to [something we dont know anything about])
Immutable describes the contents, i.e. the stuff in the box cant change. (like int* ptr is a pointer to an int)
Rust makes it very obvious that there’s a difference between constants and immutable variables, mainly because constants must be compile time constants.
What do you call it when a variable cant change after its definition, but isnt guaranteed to be the same on each function call? It’s not a constant, the contents of that label are “changing”, but the label’s contents cant be modified inside the scope of that function. So it’s a variable, but immutable.
marcos@lemmy.world 1 year ago
There’s no ISO standardized definition for variable. People use that word with all kinds of meaning.
drcouzelis@lemmy.zip 1 year ago
Waaaait a minute… isn’t it called a variable because the contents are, you know, variable?
BassTurd@lemmy.world 1 year ago
It started as a variable, then ended as a constant.
Yen@feddit.uk 1 year ago
This is needlessly obtuse. The definition of the word is that it’s non-constant. There isn’t an ISO definition of the word no, but there are many reputable dictionaries out there that will serve as an alternative.
marcos@lemmy.world 1 year ago
Well, starting with the definition from algebra, where it’s not something allowed to vary…
I guess more people know about math than use imperative programing languages.
SkyeStarfall@lemmy.blahaj.zone 1 year ago
Except that’s exactly what it is allowed to in algebra.
Sure, in most equations you solve in school there is only one possible value for the variables. But in many equations there can be multiple, or even infinite. It’s an unknown, and the contents can vary (depending on other constraints).