Christopher C. Stacy <cstacy@dtpq.com> wrote:
+---------------
| MDL called symbols "ATOM"s. You could associate a value with
| an ATOM by means of the SET function. But EVAL of an atom just
| returns the atom. To get the value, you needed to call the special
| form LVAL ("local value"). The reader macro for LVAL is "."
| so to get the value of FOO, you would write:
| .FOO
+---------------
Hey, shades of BLISS! ;-} ;-}
In BLISS, names meant the same thing everywhere (no "L-value"/"R-value"
distinction), and variable names were bound to machine addresses (well,
actually, byte pointers, but the default pointer was to a full word),
with "." as the "contents of" operator. So "x := x + 1" stored the
*address* of the word following "x" into "x" (which in C would be
"x = &x + 1", I suppose), while "x := .x + 1" incremented "x" using
integer arithmetic. (And "x := .x fadr 1.0" incremented "x" using
floating-point arithmetic!)
-Rob
p.s. For readability, I used ":=" as assignment above, but BLISS actually
used the old Teletype (ASCII-1963) back-arrow, which when ASCII morphed
into ANSCII a.k.a. USASCII (ASCII-1965 and later) became the underscore,
making all that old BLISS code look decidedly weird!! E.g.: "X_.X+1" or
"X_Y_Z_-2" (that is, in C, "x = y = z = -2;").
-----
Rob Warnock, PP-ASEL-IA <rpw3@rpw3.org>
627 26th Avenue <URL:http://rpw3.org/>
San Mateo, CA 94403 (650)572-2607