3.1 Problem: Objects

► |  | Redex: Practical Semantics Engineering

1 | Amb: A Redex Tutorial
2 | Long Tutorial
3 | Extended Exercises
4 | The Redex Reference
5 | Automated Testing Benchmark
| Bibliography
| Index

▼ | 3 | Extended Exercises

3.1 | Problem: Objects
3.2 | Solution: Objects
3.3 | Problem: Types
3.4 | Solution: Types
3.5 | Problem: Missionaries and Cannibals
3.6 | Solution: Missionaries and Cannibals
3.7 | Problem: Towers of Hanoi
3.8 | Solution: Towers of Hanoi
3.9 | Problem: GC
3.10 | Solution: GC
3.11 | Problem: Finite State Machines
3.12 | Solution: Finite State Machines
3.13 | Problem: Threads
3.14 | Solution: Threads
3.15 | Problem: Contracts
3.16 | Solution: Contracts
3.17 | Problem: Binary Addition
3.18 | Solution: Binary Addition

Racket
top contents ← prev up next →

### 3.1 Problem: Objects🔗ℹ

Design a small model of untyped objects: a language, scoping, an adapted substitution function, and a (standard or regular) reduction system.

Start with the simplification of objects as multi-entry functions:

> (define-language Object
> (e ::=
> n
> y
> (object (m (x) e) ...)
> (send e m e))
> (y ::=
> x
> this)
> (n ::= number)
> (m ::= variable-not-otherwise-mentioned)
> (x ::= variable-not-otherwise-mentioned))

Sometimes we wish to treat this like a variable and at other times, we want to exclude it from this world. To support this two-faced treatment, the grammar includes the syntactic category of y, which consists of the set x of variables and this.
top contents ← prev up next →