Eliminate mutable variables.
Boxes all mutable variables and eliminates all assignments to variables. It takes a syntax object encapsulating an expression of the input language and returns a syntax object encapsulating an expression of the output language. The input language has the following expressions:(begin
...), (if ...), (set! ...),
(set-values! ...), (quote
...), (case-lambda ...), (letrec ...),
(let-values ...), procedure calls, and variable references.
The output language has the following expressions: (begin
...), (if ...), (quote ...),
(case-lambda ...), (letrec ...),
(let-values ...), procedure calls, and variable
references.