Conditionals, Assignments and Definitions Blocks, Assignments, and Declarations - SICP Comparison Edition" /> 5.4.3   <span style="color:green"> Conditionals, Assignments and Definitions </span> <span style="color:blue"> Blocks, Assignments, and Declarations </span> - SICP Comparison Edition
Original JavaScript
Original JavaScript

[1] Footnote 2 suggests that an actual implementation would perform syntax transformations before program execution. In the same vein, names declared in blocks should be scanned out in a preprocessing step rather than each time a block is evaluated.
[2] This isn't really cheating. In an actual implementation built from scratch, we would use our explicit-control evaluator to interpret a Scheme program that performs source-level transformations like cond->if in a syntax phase that runs before execution.
5.4.3   Conditionals, Assignments and Definitions Blocks, Assignments, and Declarations