Open Recursion¶
A shared object method calls through its current receiver so specialized receiver behavior can determine the internal call's target.
Core Idea¶
Open recursion lets a shared object method call another operation on its current receiver, so a specialized receiver can supply the called behavior. In a class system an inherited method may call a subclass override; in a delegation system a parent method may call a child-provided operation.[1][2]
How would you explain it like I'm…
Do Your Own Version
Calling Your Own Special Version
Late-Bound Self Dispatch
How It Works¶
The method retains the receiver, sends an operation to it, and the language's lookup rules select a target. A private or fixed base call may close this route. The pattern does not require a loop or a terminating recursive descent. How a call site selects JavaScript this is a separate receiver-binding question.
Examples¶
Aldrich's CountingSet illustrates a hypothetical base addAll change: its internal add calls reach the subclass override and increment a counter already incremented by subclass addAll.[1] Tanter's delegated point.add sends x? to its random-point receiver, selecting that child's computed accessor.[2] Ungar and Smith describe a related Self point design.[3]
Boundary¶
Dynamic dispatch to another object alone does not show a self-send. The broader source title This (computer programming) includes receiver-reference meanings outside this bounded article.
Neighborhood in Abstraction Space¶
Open Recursion sits in a sparse region of the domain-specific corpus (98th percentile for distinctiveness): few abstractions share its structure, so a faithful description tends to retrieve it precisely.
Family — Unclustered & Miscellaneous (2835 abstractions)
Nearest neighbors
- Yo-yo Problem — 0.79
- Object-Oriented Programming — 0.76
- Virtual function — 0.75
- Feature Envy — 0.74
- Current-instance receiver reference — 0.74
Computed from structural-signature embeddings · 2026-10-31
References¶
[1] Jonathan Aldrich, “Selective Open Recursion A Solution to the Fragile Base Class Problem”, figure 1 and §§1.1–2, directly inspected PDF text. registry ↩a ↩b
[2] Éric Tanter, “Forwarding and Delegation,” Object-Oriented Programming Languages: Application and Interpretation, §§4.3.2 and 4.4, directly inspected online textbook. registry ↩a ↩b
[3] David Ungar and Randall B. Smith, “Self The Power of Simplicity”, Lisp and Symbolic Computation 4, no. 3 (1991), §3 and figure 4, printed pp. 8–9, directly inspected PDF text and caption; figure layout not independently visually inspected. registry ↩