| author | Alan Dipert
<alan@tailrecursion.com> 2026-11-11 00:20:59 UTC |
| committer | Alan Dipert
<alan@tailrecursion.com> 2026-11-11 00:20:59 UTC |
| parent | f3a700b4ac2797b6069fd0a36dd054cc47a87d64 |
| md/_MutableLocals.md | +1 | -1 |
diff --git a/md/_MutableLocals.md b/md/_MutableLocals.md index 37a9152..7076d1e 100644 --- a/md/_MutableLocals.md +++ b/md/_MutableLocals.md @@ -135,7 +135,7 @@ The first argument therefore needs a name of its own. The essential transformati The compiler does this systematically before building the graph. It saves operands in evaluation order, and subsequent operations consume those saved values. This is the purpose of _A-normalization_: making intermediate computations and their order explicit. Matt Might's [A-Normalization: Why and How](https://matt.might.net/articles/a-normalization/) explains the technique with small Scheme examples. -Introducing those temporary names brings another obligation: each [binding](https://craftinginterpreters.com/resolving-and-binding.html#static-scope) needs its own identity, even when two locals share a name. The source `recur` inside `dotimes` must also keep its original loop target. The [walkthrough](https://tailrecursion.com/repos/r/blacktide.git/b/master/t/doc/f=tutorial.md.html) follows these details. +Introducing those temporary names brings another obligation: each [binding](https://craftinginterpreters.com/resolving-and-binding.html#static-scope) needs its own identity, even when two locals share a name. The source `recur` inside `dotimes` must also keep its original loop target. ## Organizing the compiler with nanopass