Sounds like this is a source file from a Xerox-internal version of Smalltalk-80. For the public release they must have replaced these "unusual" chars (which required custom font glyphs) with ASCII, only keeping ←
and ↑
glyphs for the _
and ^
ASCII characters.
This is a best guess based on my experience with St76/78 (Update: confirmed by Dan Ingalls):
←
assignment as in var ← object
. Same in St80.
rcvr word← arg
is an alternative to word:
and usually indicates assignment to a slot of the receiver (e.g. x←
as in point x ← 100
). St80 only allows keywords ending in a colon :
.
The parser treats ←
as lower precedence so you can have keyword expressions on both sides of it. E.g.
a foo: b ← c bar: d
would eval c bar: d
and pass the result as second argument to a's foo:←
method).
◦
indexing as in array◦index
. St80 uses at:
instead.
◦←
equivalent to St80's at:put:
as in array◦index ← value
≡
identity, like St80's ==
¬
literal for negative numbers as in ¬1
for -1. The parser treated -
as a binary message selector so another symbol had to be used for negative numbers literals.
≠
not equal, like St80's ~=
≢
not identical, like St80's ~~
⌾
create a Point, like St80's @
∢
match token from stream. If the next token read from stream matches the argument, it is consumed and returned. Otherwise it answers false
.
For more info check out the Smalltalk Zoo website.