What is the exact meaning of these characters ←, ≡, ¬, ≠, ⌾, and ∢ and how are used in Smalltalk-80?
consider the following expressions: (taken from the smalltalk-80 source code)
^self class ≡ x ≡ false
^mem ◦ ¬448 ≠ 0
strm frame ← 15000 ⌾ frame origin y rect: 20000 ⌾ frame corner y.
neg ← (aStream ∢ 45 "-" ifTrue: [true] ifFalse: [aStream ∢ 21 "**¬**"]).
Note: This examples were extracted from the original Xerox Alto disks found in this link: http://bitsavers.trailing-edge.com/bits/Xerox/Alto/disk_images/
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With