Glossary

A reference of key Beamtalk terms and concepts. Each entry links back to the chapter where the concept is introduced.


Actor — A concurrent object that runs as an independent BEAM process with its own mutable state and mailbox. Defined with Actor subclass:. Actors communicate via message passing (synchronous calls or asynchronous casts). See Chapter 11.

BEAM — The Erlang virtual machine (Bogdan/Björn's Erlang Abstract Machine). Beamtalk compiles to Core Erlang, which is then compiled to BEAM bytecode. The BEAM provides lightweight processes, fault tolerance, and hot code loading. See Chapter 16.

Binary message — A message with exactly one argument and a symbolic selector like +, -, *, /, ++, <, or =:=. Binary messages have higher precedence than keyword messages but lower than unary. Beamtalk uses standard math precedence within binary messages (unlike classic Smalltalk). See Chapter 4.

Block — An anonymous function (closure) written as [body] or [:arg | body]. Blocks are first-class objects: they can be stored in variables, passed as arguments, and evaluated with value, value:, or valueWithArguments:. Blocks close over their enclosing scope. See Chapter 7.

Cascade — A syntactic form that sends multiple messages to the same receiver using semicolons: obj msg1; msg2; msg3. The result of a cascade is the result of the last message. See Chapter 4.

DNU (doesNotUnderstand) — The error raised when an object receives a message it doesn't understand. DNU is Beamtalk's equivalent of "method not found" in other languages. Guard against it with respondsTo:. See Chapter 4 and Chapter 12.

Keyword message — A message with one or more arguments, where each argument is preceded by a keyword ending in a colon: receiver key: arg1 key2: arg2. Keyword messages have the lowest precedence of the three message types. The full selector is the concatenation of all keywords (e.g., inject:into:). See Chapter 4.

Message — The fundamental operation in Beamtalk. All computation is expressed as sending messages to objects. A message has a receiver, a selector (name), and optionally arguments. There are three kinds: unary, binary, and keyword. See Chapter 4.

Non-local return — A return triggered by ^ inside a block. Unlike a normal return (which exits only the block), ^ exits the enclosing method immediately. This is standard Smalltalk semantics, implemented via throw/catch in codegen. See Chapter 7 and Chapter 8.

OTP — The Open Telecom Platform, a set of Erlang libraries and design principles for building fault-tolerant systems. Beamtalk actors map directly to OTP gen_servers, and supervisors use OTP supervision trees. See Chapter 17.

Slot — An instance variable of a class. Value classes declare slots with field: name = default (immutable — updates return a new object via with*: setters). Actors declare slots with state: name = default (mutable with self.name := value). See Chapter 10 and Chapter 11.

Unary message — A message with no arguments, written as receiver selector. Examples: 42 class, "hello" size, -5 abs. Unary messages have the highest precedence and evaluate left-to-right when chained. See Chapter 4.

Value class — An immutable object defined with Value subclass:. Once created, its slots cannot change — "mutations" return a new object. Value objects support structural equality (=:=) and are ideal for data records like coordinates, money amounts, and configuration. See Chapter 10.