► |  | 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

top ← prev up next →

#### 3.9`` Problem: GC

Consider the language of stored binary trees:

> (define-language L
> [V number
> (cons σ σ)]
> [Σ ([σ V] ...)]
> [σ variable-not-otherwise-mentioned])

Design the -->gc reduction relation, which implements garbage collection. The -->gc reduction relation operates on a configuration that combines the store Σ, a set of “gray” addresses, i.e., σs) to be explored (the addresses of the initially reachable objects, also called roots, plus a set of “black” addresses (initially empty). Each step operates on one gray address, adjusting the gray and black sets based on the address’s value in the store. No more steps are possible when the set of gray addresses goes empty, at which point every address not in the black list can be pruned from the store.
top ← prev up next →