Context Dependent Semantic: Python, Lisp setf
Python Ruby JavaScript Etc
Many language have the syntax a[i] = x
to assign or replace a element in a list. It is a syntax that has context dependent semantics.
The issue here, is that it uses the same notation to indicate a “place”. For example,
a[3]
is the third index in array.
So,
a[3]=4
means make the third index to have value of 4.
The problem here, is that there's different meaning of a[3]
in the 2 cases.
Normally,
a[3]
evaluates to a value.
But in a[3]=4
,
the
a[3]
does not evaluate. Rather, it's part of the syntax that tells the compiler of a “storage location”.
So, you see, the a[3]
in print a[3]
and a[3]=4
have diff meaning, and is context dependent.
Common Lisp setf
The Common Lisp setf is the most screwed design in computer languages possible.
here's elisp manual explaining setf.

Forth and Bliss
And of course Forth also explicitly has fetch and store ops so you can say
3 a @ .
andx @ 3 a !
for printing and assignmentThe Bliss language (DEC Systems lang) had a unary dot operator to return a value so you'd say
a[3]=.x
andprint .a[3]
—from Bahstin Beer Bum @mmaug, 2016-10-05