What does prevent : to become the assignment operator of a language? It's short, and quite "explicit".
x: 2
Self and Newspeak sort of do it this way, adding implicit self to Smalltalk's keyword syntax and accessor convention.
These 'accessors' also work on local variables, there is no special syntax for assignment. So when you write x it means send the message x, which starts its lookup in the local environment and works itself outwards. When you write x:2 it sends the message x: with argument 2, also starting in the local environment.
The accessors are automatically generated in pairs for slots. It sorta works, but it seems a bit too convoluted just to say "hey, we can do everything with just messaging".
The Rebol family of languages works like that.
Except that it doesn't. ":" in "x:" is not an assignment operator and "x" is not a variable.
Yes yes, it's a set-word! type in the "do" dialect. That's not how it's learned when first starting, though, and not usually the thing you're thinking about when using it moment-to-moment.
Shift key?
also, there's no hand balance on either of the composite symbols. := is my right pinky, <- is different fingers, but bottom and top row. neither exactly flows from the fingertips.
I don't think that is a big issue. Just bind it to something else. In RStudio by default <- is bound to alt and -.
But that is still 2 keystrokes.
That is why in R they came to the compromise to use both <- and =.
Re:Why Does “=” Mean Assignment?
by ryanmonroe on Tuesday April 10, 2018 @06:03PM
(#16805955)
Well, it also adds a space before and after so you're saving one keystroke vs space = space
a byte of RAM or disk is cheaper than a human neuron.
Brains are more important than fingers.
Well, I suppose one could add a `⟵` key to the keyboard... :-P
Since in procedural language, assignment is a much more common operation than equality check, it is reasonable to favor "=" over ":=" or even "<-".