I'm new to Smalltalk and I'm impressed with the fact that there are only just 6 keywords in the language (self
, super
, true
, false
, nil
& thisContext
), and how pure it is in having almost everything as message passing, eg. looping using whileTrue
, if/else using ifTrue
, etc ... which are way different from what I'm used to in other languages.
Yet, there are cases where I just cannot make sense of how message passing really fit in, these include:
:=
;
.
#( ... )
These aren't message passing, right?
As you've discovered, there's still some actual Smalltalk syntax. Block construction, literal strings/symbols/comments, local variable declaration (|...|
), and returning (^
) are a few things you didn't mention which are also syntax.
Some extensions (e.g. #(...)
, which typically creates an Array
, not a set) are certainly expressible otherwise, for example #(1 2 3)
is equivalent to Array with: 1 with: 2 with: 3
; they're just there to make the code easier to read and write.