Jeremy Siek 3 年之前
父節點
當前提交
85dfd61206
共有 1 個文件被更改,包括 204 次插入205 次删除
  1. 204 205
      book.tex

+ 204 - 205
book.tex

@@ -1984,7 +1984,7 @@ inherits from the class for \LangInt{} and the method
 {\if\edition\racketEd  
 {\if\edition\racketEd  
 \begin{minipage}{0.45\textwidth}
 \begin{minipage}{0.45\textwidth}
 \begin{lstlisting}
 \begin{lstlisting}
-(define interp_Lint_class
+(define interp-Lint-class
   (class object%
   (class object%
     (define/public ((interp_exp env) e)
     (define/public ((interp_exp env) e)
       (match e
       (match e
@@ -1996,8 +1996,8 @@ inherits from the class for \LangInt{} and the method
 \end{minipage}
 \end{minipage}
 \begin{minipage}{0.45\textwidth}
 \begin{minipage}{0.45\textwidth}
   \begin{lstlisting}
   \begin{lstlisting}
-(define interp_Lvar_class
-  (class interp_Lint_class
+(define interp-Lvar-class
+  (class interp-Lint-class
     (define/override ((interp_exp env) e)
     (define/override ((interp_exp env) e)
       (match e
       (match e
         [(Var x)
         [(Var x)
@@ -2059,7 +2059,7 @@ call it \code{e0}, by creating an object of the \LangVar{} class
 and calling the \code{interp\_exp} method.
 and calling the \code{interp\_exp} method.
 {\if\edition\racketEd
 {\if\edition\racketEd
 \begin{lstlisting}
 \begin{lstlisting}
-((send (new interp_Lvar_class) interp_exp '()) e0)
+((send (new interp-Lvar-class) interp_exp '()) e0)
 \end{lstlisting}
 \end{lstlisting}
 \fi}
 \fi}
 {\if\edition\pythonEd
 {\if\edition\pythonEd
@@ -2156,7 +2156,7 @@ variable, it looks up the corresponding value in the dictionary.
 \begin{figure}[tp]
 \begin{figure}[tp]
 {\if\edition\racketEd
 {\if\edition\racketEd
 \begin{lstlisting}
 \begin{lstlisting}
-(define interp_Lint_class
+(define interp-Lint-class
   (class object%
   (class object%
     (super-new)
     (super-new)
     
     
@@ -2222,8 +2222,8 @@ def interp_Lint(p):
 \begin{figure}[tp]
 \begin{figure}[tp]
 {\if\edition\racketEd
 {\if\edition\racketEd
 \begin{lstlisting}
 \begin{lstlisting}
-(define interp_Lvar_class
-  (class interp_Lint_class
+(define interp-Lvar-class
+  (class interp-Lint-class
     (super-new)
     (super-new)
     
     
     (define/override ((interp_exp env) e)
     (define/override ((interp_exp env) e)
@@ -2236,7 +2236,7 @@ def interp_Lint(p):
     ))
     ))
 
 
 (define (interp_Lvar p)
 (define (interp_Lvar p)
-  (send (new interp_Lvar_class) interp_program p))
+  (send (new interp-Lvar-class) interp_program p))
 \end{lstlisting}
 \end{lstlisting}
 \fi}
 \fi}
 {\if\edition\pythonEd
 {\if\edition\pythonEd
@@ -6758,8 +6758,8 @@ evaluated if $e_1$ evaluates to \TRUE{}.
 \begin{figure}[tbp]
 \begin{figure}[tbp]
 {\if\edition\racketEd    
 {\if\edition\racketEd    
 \begin{lstlisting}
 \begin{lstlisting}
-(define interp_Lif_class
-  (class interp_Lvar_class
+(define interp-Lif-class
+  (class interp-Lvar-class
     (super-new)
     (super-new)
 
 
     (define/public (interp_op op) ...)
     (define/public (interp_op op) ...)
@@ -6787,7 +6787,7 @@ evaluated if $e_1$ evaluates to \TRUE{}.
     ))
     ))
 
 
 (define (interp_Lif p)
 (define (interp_Lif p)
-  (send (new interp_Lif_class) interp_program p))
+  (send (new interp-Lif-class) interp_program p))
 \end{lstlisting}
 \end{lstlisting}
 \fi}
 \fi}
 {\if\edition\pythonEd
 {\if\edition\pythonEd
@@ -7016,7 +7016,7 @@ Figure~\ref{fig:type-check-Lvar}.  The type of an integer constant is
 \begin{figure}[tbp]
 \begin{figure}[tbp]
 {\if\edition\racketEd  
 {\if\edition\racketEd  
 \begin{lstlisting}[basicstyle=\ttfamily\footnotesize]
 \begin{lstlisting}[basicstyle=\ttfamily\footnotesize]
-(define type-check-Lvar_class
+(define type-check-Lvar-class
   (class object%
   (class object%
     (super-new)
     (super-new)
 
 
@@ -7064,7 +7064,7 @@ Figure~\ref{fig:type-check-Lvar}.  The type of an integer constant is
     ))
     ))
 
 
 (define (type-check-Lvar p)
 (define (type-check-Lvar p)
-  (send (new type-check-Lvar_class) type-check-program p))
+  (send (new type-check-Lvar-class) type-check-program p))
 \end{lstlisting}
 \end{lstlisting}
 \fi}
 \fi}
 {\if\edition\pythonEd
 {\if\edition\pythonEd
@@ -7126,8 +7126,8 @@ class TypeCheckLvar:
 \begin{figure}[tbp]
 \begin{figure}[tbp]
 {\if\edition\racketEd    
 {\if\edition\racketEd    
 \begin{lstlisting}[basicstyle=\ttfamily\footnotesize]
 \begin{lstlisting}[basicstyle=\ttfamily\footnotesize]
-(define type-check-Lif_class
-  (class type-check-Lvar_class
+(define type-check-Lif-class
+  (class type-check-Lvar-class
     (super-new)
     (super-new)
     (inherit check-type-equal?)
     (inherit check-type-equal?)
     
     
@@ -7161,7 +7161,7 @@ class TypeCheckLvar:
     ))
     ))
 
 
 (define (type-check-Lif p)
 (define (type-check-Lif p)
-  (send (new type-check-Lif_class) type-check-program p))
+  (send (new type-check-Lif-class) type-check-program p))
 \end{lstlisting}
 \end{lstlisting}
 \fi}
 \fi}
 {\if\edition\pythonEd
 {\if\edition\pythonEd
@@ -9670,7 +9670,7 @@ computing the sum of the first five positive integers.
       sum)))
       sum)))
 \end{lstlisting}
 \end{lstlisting}
 The \code{while} loop consists of a condition and a
 The \code{while} loop consists of a condition and a
-body\footnote{The \code{while} loop in particular is not a built-in
+body\footnote{The \code{while} loop is not a built-in
 feature of the Racket language, but Racket includes many looping
 feature of the Racket language, but Racket includes many looping
 constructs and it is straightforward to define \code{while} as a
 constructs and it is straightforward to define \code{while} as a
 macro.}. The body is evaluated repeatedly so long as the condition
 macro.}. The body is evaluated repeatedly so long as the condition
@@ -9686,18 +9686,16 @@ value. Instead their result is the \code{\#<void>} value.  The
 expression \code{(void)} is an explicit way to create the
 expression \code{(void)} is an explicit way to create the
 \code{\#<void>} value and it has type \code{Void}.  The
 \code{\#<void>} value and it has type \code{Void}.  The
 \code{\#<void>} value can be passed around just like other values
 \code{\#<void>} value can be passed around just like other values
-inside an \LangLoop{} program and a \code{\#<void>} value can be
-compared for equality with another \code{\#<void>} value. However,
-there are no other operations specific to the the \code{\#<void>}
-value in \LangLoop{}. In contrast, Racket defines the \code{void?}
-predicate that returns \code{\#t} when applied to \code{\#<void>} and
-\code{\#f} otherwise.
-%
-\footnote{Racket's \code{Void} type corresponds to what is called the
-  \code{Unit} type in the programming languages literature. Racket's
-  \code{Void} type is inhabited by a single value \code{\#<void>}
-  which corresponds to \code{unit} or \code{()} in the
-  literature~\citep{Pierce:2002hj}.}.
+inside an \LangLoop{} program and it can be compared for equality with
+another \code{\#<void>} value. However, there are no other operations
+specific to the the \code{\#<void>} value in \LangLoop{}. In contrast,
+Racket defines the \code{void?}  predicate that returns \code{\#t}
+when applied to \code{\#<void>} and \code{\#f} otherwise.%
+%
+\footnote{Racket's \code{Void} type corresponds to what is often
+  called the \code{Unit} type. Racket's \code{Void} type is inhabited
+  by a single value \code{\#<void>} which corresponds to \code{unit}
+  or \code{()} in the literature~\citep{Pierce:2002hj}.}.
 %
 %
 With the addition of side-effecting features such as \code{while} loop
 With the addition of side-effecting features such as \code{while} loop
 and \code{set!}, it is helpful to also include in a language feature
 and \code{set!}, it is helpful to also include in a language feature
@@ -9834,7 +9832,7 @@ Figure~\ref{fig:Lwhile-concrete-syntax} and its abstract syntax is defined
 in Figure~\ref{fig:Lwhile-syntax}.
 in Figure~\ref{fig:Lwhile-syntax}.
 %
 %
 The definitional interpreter for \LangLoop{} is shown in
 The definitional interpreter for \LangLoop{} is shown in
-Figure~\ref{fig:interp-Rwhile}.
+Figure~\ref{fig:interp-Lwhile}.
 %
 %
 {\if\edition\racketEd    
 {\if\edition\racketEd    
 %
 %
@@ -9849,17 +9847,17 @@ value.
 Now to discuss the new cases. For \code{SetBang}, we lookup the
 Now to discuss the new cases. For \code{SetBang}, we lookup the
 variable in the environment to obtain a boxed value and then we change
 variable in the environment to obtain a boxed value and then we change
 it using \code{set-box!} to the result of evaluating the right-hand
 it using \code{set-box!} to the result of evaluating the right-hand
-side.  The result value of a \code{SetBang} is \code{void}.
+side.  The result value of a \code{SetBang} is \code{\#<void>}.
 %
 %
 For the \code{WhileLoop}, we repeatedly 1) evaluate the condition, and
 For the \code{WhileLoop}, we repeatedly 1) evaluate the condition, and
 if the result is true, 2) evaluate the body.
 if the result is true, 2) evaluate the body.
-The result value of a \code{while} loop is also \code{void}.
+The result value of a \code{while} loop is also \code{\#<void>}.
 %
 %
 The $\BEGIN{\itm{es}}{\itm{body}}$ expression evaluates the
 The $\BEGIN{\itm{es}}{\itm{body}}$ expression evaluates the
 subexpressions \itm{es} for their effects and then evaluates
 subexpressions \itm{es} for their effects and then evaluates
 and returns the result from \itm{body}.
 and returns the result from \itm{body}.
 %
 %
-The $\VOID{}$ expression produces the \code{void} value.
+The $\VOID{}$ expression produces the \code{\#<void>} value.
 %
 %
 \fi}
 \fi}
 {\if\edition\pythonEd
 {\if\edition\pythonEd
@@ -9874,15 +9872,19 @@ function, where we repeatedly interpret the \code{body} so long as the
 \begin{figure}[tbp]
 \begin{figure}[tbp]
 {\if\edition\racketEd    
 {\if\edition\racketEd    
 \begin{lstlisting}[basicstyle=\ttfamily\footnotesize]
 \begin{lstlisting}[basicstyle=\ttfamily\footnotesize]
-(define interp-Rwhile_class
-  (class interp-Rany_class
+(define interp-Lwhile-class
+  (class interp-Lif-class
     (super-new)
     (super-new)
 
 
     (define/override ((interp-exp env) e)
     (define/override ((interp-exp env) e)
       (define recur (interp-exp env))
       (define recur (interp-exp env))
       (match e
       (match e
+        [(Let x e body)
+         (define new-env (dict-set env x (box (recur e))))
+         ((interp-exp new-env) body)]
+        [(Var x) (unbox (dict-ref env x))]
         [(SetBang x rhs)
         [(SetBang x rhs)
-         (set-box! (lookup x env) (recur rhs))]
+         (set-box! (dict-ref env x) (recur rhs))]
         [(WhileLoop cnd body)
         [(WhileLoop cnd body)
          (define (loop)
          (define (loop)
            (cond [(recur cnd)  (recur body) (loop)]
            (cond [(recur cnd)  (recur body) (loop)]
@@ -9895,8 +9897,8 @@ function, where we repeatedly interpret the \code{body} so long as the
         [else ((super interp-exp env) e)]))
         [else ((super interp-exp env) e)]))
     ))
     ))
 
 
-(define (interp-Rwhile p)
-  (send (new interp-Rwhile_class) interp-program p))
+(define (interp-Lwhile p)
+  (send (new interp-Lwhile-class) interp-program p))
 \end{lstlisting}
 \end{lstlisting}
 \fi}
 \fi}
 {\if\edition\pythonEd
 {\if\edition\pythonEd
@@ -9915,22 +9917,19 @@ class InterpLwhile(InterpLif):
 \end{lstlisting}
 \end{lstlisting}
 \fi}
 \fi}
 \caption{Interpreter for \LangLoop{}.}
 \caption{Interpreter for \LangLoop{}.}
-\label{fig:interp-Rwhile}
+\label{fig:interp-Lwhile}
 \end{figure}
 \end{figure}
 
 
 The type checker for \LangLoop{} is defined in
 The type checker for \LangLoop{} is defined in
-Figure~\ref{fig:type-check-Rwhile}.
+Figure~\ref{fig:type-check-Lwhile}.
 %
 %
 {\if\edition\racketEd    
 {\if\edition\racketEd    
 %
 %
-For \LangLoop{} we add a type named \code{Void} and the only value of
-this type is the \code{void} value.
-%
-The type checking of the \code{SetBang} expression requires the type of
-the variable and the right-hand-side to agree. The result type is
-\code{Void}. For \code{while}, the condition must be a
-\code{Boolean}. The result type is also \code{Void}.  For
-\code{Begin}, the result type is the type of its last subexpression.
+The type checking of the \code{SetBang} expression requires the type
+of the variable and the right-hand-side to agree. The result type is
+\code{Void}. For \code{while}, the condition must be a \code{Boolean}
+and the result type is \code{Void}.  For \code{Begin}, the result type
+is the type of its last subexpression.
 %
 %
 \fi}
 \fi}
 %
 %
@@ -9945,8 +9944,8 @@ well typed.
 \begin{figure}[tbp]
 \begin{figure}[tbp]
 {\if\edition\racketEd    
 {\if\edition\racketEd    
 \begin{lstlisting}[basicstyle=\ttfamily\footnotesize]
 \begin{lstlisting}[basicstyle=\ttfamily\footnotesize]
-(define type-check-Rwhile_class
-  (class type-check-Rany_class
+(define type-check-Lwhile-class
+  (class type-check-Lif-class
     (super-new)
     (super-new)
     (inherit check-type-equal?)
     (inherit check-type-equal?)
 
 
@@ -9972,8 +9971,8 @@ well typed.
           [else ((super type-check-exp env) e)])))
           [else ((super type-check-exp env) e)])))
     ))
     ))
 
 
-(define (type-check-Rwhile p)
-  (send (new type-check-Rwhile_class) type-check-program p))
+(define (type-check-Lwhile p)
+  (send (new type-check-Lwhile-class) type-check-program p))
 \end{lstlisting}
 \end{lstlisting}
 \fi}
 \fi}
 {\if\edition\pythonEd
 {\if\edition\pythonEd
@@ -9994,7 +9993,7 @@ class TypeCheckLwhile(TypeCheckLif):
 \end{lstlisting}
 \end{lstlisting}
 \fi}
 \fi}
 \caption{Type checker for the \LangLoop{} language.}
 \caption{Type checker for the \LangLoop{} language.}
-\label{fig:type-check-Rwhile}
+\label{fig:type-check-Lwhile}
 \end{figure}
 \end{figure}
 
 
 
 
@@ -10488,7 +10487,7 @@ statement.
 %
 %
 \fi}  
 \fi}  
 %
 %
-Figure~\ref{fig:Rwhile-anf-syntax} defines the output language
+Figure~\ref{fig:Lwhile-anf-syntax} defines the output language
 \LangLoopANF{} of this pass.
 \LangLoopANF{} of this pass.
 
 
 
 
@@ -10542,7 +10541,7 @@ Figure~\ref{fig:Rwhile-anf-syntax} defines the output language
 \end{minipage}
 \end{minipage}
 }
 }
 \caption{\LangLoopANF{} is \LangLoop{} in monadic normal form.}
 \caption{\LangLoopANF{} is \LangLoop{} in monadic normal form.}
-\label{fig:Rwhile-anf-syntax}
+\label{fig:Lwhile-anf-syntax}
 \end{figure}
 \end{figure}
 
 
 {\if\edition\racketEd    
 {\if\edition\racketEd    
@@ -10731,10 +10730,10 @@ The \code{analyze\_dataflow} function has four parameters.
 
 
 \begin{figure}[p]
 \begin{figure}[p]
 \begin{tikzpicture}[baseline=(current  bounding  box.center)]
 \begin{tikzpicture}[baseline=(current  bounding  box.center)]
-\node (Rfun) at (0,2)  {\large \LangLoop{}};
-\node (Rfun-2) at (3,2)  {\large \LangLoop{}};
-%\node (Rfun-3) at (6,2)  {\large \LangLoop{}};
-%\node (Rfun-4) at (9,2)  {\large \LangLoopFunRef{}};
+\node (Lfun) at (0,2)  {\large \LangLoop{}};
+\node (Lfun-2) at (3,2)  {\large \LangLoop{}};
+%\node (Lfun-3) at (6,2)  {\large \LangLoop{}};
+%\node (Lfun-4) at (9,2)  {\large \LangLoopFunRef{}};
 %\node (F1-1) at (12,0)  {\large \LangLoopFunRef{}};
 %\node (F1-1) at (12,0)  {\large \LangLoopFunRef{}};
 %\node (F1-2) at (9,0)  {\large \LangLoopFunRef{}};
 %\node (F1-2) at (9,0)  {\large \LangLoopFunRef{}};
 %\node (F1-3) at (6,0)  {\large \LangLoopFunRef{}};
 %\node (F1-3) at (6,0)  {\large \LangLoopFunRef{}};
@@ -10750,17 +10749,17 @@ The \code{analyze\_dataflow} function has four parameters.
 \node (x86-5) at (9,-4) {\large \LangXIf{}};
 \node (x86-5) at (9,-4) {\large \LangXIf{}};
 
 
 
 
-%% \path[->,bend left=15] (Rfun) edge [above] node
-%%      {\ttfamily\footnotesize type-check} (Rfun-2);
-\path[->,bend left=15] (Rfun) edge [above] node
-     {\ttfamily\footnotesize shrink} (Rfun-2);
-\path[->,bend left=15] (Rfun-2) edge [above] node
+%% \path[->,bend left=15] (Lfun) edge [above] node
+%%      {\ttfamily\footnotesize type-check} (Lfun-2);
+\path[->,bend left=15] (Lfun) edge [above] node
+     {\ttfamily\footnotesize shrink} (Lfun-2);
+\path[->,bend left=15] (Lfun-2) edge [above] node
      {\ttfamily\footnotesize uniquify} (F1-4);
      {\ttfamily\footnotesize uniquify} (F1-4);
-%% \path[->,bend left=15] (Rfun-3) edge [above] node
-%%      {\ttfamily\footnotesize reveal\_functions} (Rfun-4);
-%% \path[->,bend left=15] (Rfun-4) edge [right] node
+%% \path[->,bend left=15] (Lfun-3) edge [above] node
+%%      {\ttfamily\footnotesize reveal\_functions} (Lfun-4);
+%% \path[->,bend left=15] (Lfun-4) edge [right] node
 %%      {\ttfamily\footnotesize convert\_assignments} (F1-1);
 %%      {\ttfamily\footnotesize convert\_assignments} (F1-1);
-%% \path[->,bend left=15] (Rfun-4) edge [right] node
+%% \path[->,bend left=15] (Lfun-4) edge [right] node
 %%      {\ttfamily\footnotesize convert\_to\_clos.} (F1-2);
 %%      {\ttfamily\footnotesize convert\_to\_clos.} (F1-2);
 %% \path[->,bend right=15] (F1-2) edge [above] node
 %% \path[->,bend right=15] (F1-2) edge [above] node
 %%      {\ttfamily\footnotesize limit\_fun.} (F1-3);
 %%      {\ttfamily\footnotesize limit\_fun.} (F1-3);
@@ -10783,10 +10782,10 @@ The \code{analyze\_dataflow} function has four parameters.
 \path[->,bend left=15] (x86-4) edge [right] node {\ttfamily\footnotesize prelude\_and\_concl.} (x86-5);
 \path[->,bend left=15] (x86-4) edge [right] node {\ttfamily\footnotesize prelude\_and\_concl.} (x86-5);
 \end{tikzpicture}
 \end{tikzpicture}
   \caption{Diagram of the passes for \LangLoop{}.}
   \caption{Diagram of the passes for \LangLoop{}.}
-\label{fig:Rwhile-passes}
+\label{fig:Lwhile-passes}
 \end{figure}
 \end{figure}
 
 
-Figure~\ref{fig:Rwhile-passes} provides an overview of all the passes needed
+Figure~\ref{fig:Lwhile-passes} provides an overview of all the passes needed
 for the compilation of \LangLoop{}.
 for the compilation of \LangLoop{}.
 
 
 
 
@@ -11107,8 +11106,8 @@ Figure~\ref{fig:interp-Lvec} shows the definitional interpreter for the
 \begin{figure}[tbp]
 \begin{figure}[tbp]
 {\if\edition\racketEd
 {\if\edition\racketEd
 \begin{lstlisting}
 \begin{lstlisting}
-(define interp-Lvec_class
-  (class interp-Lif_class
+(define interp-Lvec-class
+  (class interp-Lif-class
     (super-new)
     (super-new)
 
 
     (define/override (interp-op op)
     (define/override (interp-op op)
@@ -11136,7 +11135,7 @@ Figure~\ref{fig:interp-Lvec} shows the definitional interpreter for the
     ))
     ))
 
 
 (define (interp-Lvec p)
 (define (interp-Lvec p)
-  (send (new interp-Lvec_class) interp-program p))
+  (send (new interp-Lvec-class) interp-program p))
 \end{lstlisting}
 \end{lstlisting}
 \fi}
 \fi}
 %
 %
@@ -11189,8 +11188,8 @@ start and end parentheses. \index{subject}{unquote-slicing}}
 \begin{figure}[tp]
 \begin{figure}[tp]
 {\if\edition\racketEd
 {\if\edition\racketEd
 \begin{lstlisting}[basicstyle=\ttfamily\scriptsize]
 \begin{lstlisting}[basicstyle=\ttfamily\scriptsize]
-(define type-check-Lvec_class
-  (class type-check-Lif_class
+(define type-check-Lvec-class
+  (class type-check-Lif-class
     (super-new)
     (super-new)
     (inherit check-type-equal?)
     (inherit check-type-equal?)
 
 
@@ -11245,7 +11244,7 @@ start and end parentheses. \index{subject}{unquote-slicing}}
     ))
     ))
 
 
 (define (type-check-Lvec p)
 (define (type-check-Lvec p)
-  (send (new type-check-Lvec_class) type-check-program p))
+  (send (new type-check-Lvec-class) type-check-program p))
 \end{lstlisting}
 \end{lstlisting}
 \fi}
 \fi}
 {\if\edition\pythonEd
 {\if\edition\pythonEd
@@ -12709,8 +12708,8 @@ predicate.
 
 
 \begin{figure}[tbp]
 \begin{figure}[tbp]
 \begin{lstlisting}[basicstyle=\ttfamily\footnotesize]
 \begin{lstlisting}[basicstyle=\ttfamily\footnotesize]
-(define type-check-Lvecof_class
-  (class type-check-Rwhile_class
+(define type-check-Lvecof-class
+  (class type-check-Lwhile-class
     (super-new)
     (super-new)
     (inherit check-type-equal?)
     (inherit check-type-equal?)
 
 
@@ -12759,7 +12758,7 @@ predicate.
     ))
     ))
 
 
 (define (type-check-Lvecof p)
 (define (type-check-Lvecof p)
-  (send (new type-check-Lvecof_class) type-check-program p))
+  (send (new type-check-Lvecof-class) type-check-program p))
 \end{lstlisting}
 \end{lstlisting}
 \caption{Type checker for the \LangArray{} language.}
 \caption{Type checker for the \LangArray{} language.}
 \label{fig:type-check-Lvecof}
 \label{fig:type-check-Lvecof}
@@ -12773,8 +12772,8 @@ integers.
 
 
 \begin{figure}[tbp]
 \begin{figure}[tbp]
 \begin{lstlisting}[basicstyle=\ttfamily\footnotesize]
 \begin{lstlisting}[basicstyle=\ttfamily\footnotesize]
-(define interp-Lvecof_class
-  (class interp-Rwhile_class
+(define interp-Lvecof-class
+  (class interp-Lwhile-class
     (super-new)
     (super-new)
 
 
     (define/override (interp-op op)
     (define/override (interp-op op)
@@ -12786,7 +12785,7 @@ integers.
     ))
     ))
 
 
 (define (interp-Lvecof p)
 (define (interp-Lvecof p)
-  (send (new interp-Lvecof_class) interp-program p))
+  (send (new interp-Lvecof-class) interp-program p))
 \end{lstlisting}
 \end{lstlisting}
 \caption{Interpreter for \LangArray{}.}
 \caption{Interpreter for \LangArray{}.}
 \label{fig:interp-Lvecof}
 \label{fig:interp-Lvecof}
@@ -13047,21 +13046,21 @@ abstractions, which is the topic of Chapter~\ref{ch:Llambda}.
 \section{The \LangFun{} Language}
 \section{The \LangFun{} Language}
 
 
 The concrete and abstract syntax for function definitions and function
 The concrete and abstract syntax for function definitions and function
-application is shown in Figures~\ref{fig:Rfun-concrete-syntax} and
-\ref{fig:Rfun-syntax}, where we define the \LangFun{} language.  Programs in
+application is shown in Figures~\ref{fig:Lfun-concrete-syntax} and
+\ref{fig:Lfun-syntax}, where we define the \LangFun{} language.  Programs in
 \LangFun{} begin with zero or more function definitions.  The function
 \LangFun{} begin with zero or more function definitions.  The function
 names from these definitions are in-scope for the entire program,
 names from these definitions are in-scope for the entire program,
 including all other function definitions (so the ordering of function
 including all other function definitions (so the ordering of function
 definitions does not matter).
 definitions does not matter).
 %
 %
 \python{The abstract syntax for function parameters in
 \python{The abstract syntax for function parameters in
-  Figure~\ref{fig:Rfun-syntax} is a list of pairs, where each pair
+  Figure~\ref{fig:Lfun-syntax} is a list of pairs, where each pair
   consists of a parameter name and its type.  This design differs from
   consists of a parameter name and its type.  This design differs from
   Python's \code{ast} module, which has a more complex structure for
   Python's \code{ast} module, which has a more complex structure for
   function parameters to handle keyword parameters,
   function parameters to handle keyword parameters,
   defaults, and so on. The type checker in \code{type\_check\_Lfun} converts the
   defaults, and so on. The type checker in \code{type\_check\_Lfun} converts the
   complex Python abstract syntax into the simpler syntax of
   complex Python abstract syntax into the simpler syntax of
-  Figure~\ref{fig:Rfun-syntax}. The fourth and sixth parameters of the
+  Figure~\ref{fig:Lfun-syntax}. The fourth and sixth parameters of the
   \code{FunctionDef} constructor are for decorators and a type
   \code{FunctionDef} constructor are for decorators and a type
   comment, neither of which are used by our compiler. We recommend
   comment, neither of which are used by our compiler. We recommend
   replacing them with \code{None} in the \code{shrink} pass.
   replacing them with \code{None} in the \code{shrink} pass.
@@ -13182,7 +13181,7 @@ nested inside each other.
 \end{minipage}
 \end{minipage}
 }
 }
 \caption{The concrete syntax of \LangFun{}, extending \LangVec{} (Figure~\ref{fig:Lvec-concrete-syntax}).}
 \caption{The concrete syntax of \LangFun{}, extending \LangVec{} (Figure~\ref{fig:Lvec-concrete-syntax}).}
-\label{fig:Rfun-concrete-syntax}
+\label{fig:Lfun-concrete-syntax}
 \end{figure}
 \end{figure}
 
 
 \begin{figure}[tp]
 \begin{figure}[tp]
@@ -13223,11 +13222,11 @@ nested inside each other.
 \end{minipage}
 \end{minipage}
 }
 }
 \caption{The abstract syntax of \LangFun{}, extending \LangVec{} (Figure~\ref{fig:Lvec-syntax}).}
 \caption{The abstract syntax of \LangFun{}, extending \LangVec{} (Figure~\ref{fig:Lvec-syntax}).}
-\label{fig:Rfun-syntax}
+\label{fig:Lfun-syntax}
 \end{figure}
 \end{figure}
 
 
 
 
-The program in Figure~\ref{fig:Rfun-function-example} is a
+The program in Figure~\ref{fig:Lfun-function-example} is a
 representative example of defining and using functions in \LangFun{}.
 representative example of defining and using functions in \LangFun{}.
 We define a function \code{map} that applies some other function
 We define a function \code{map} that applies some other function
 \code{f} to both elements of a tuple and returns a new tuple
 \code{f} to both elements of a tuple and returns a new tuple
@@ -13265,11 +13264,11 @@ print( map(inc, (0, 41))[1] )
 \end{lstlisting}
 \end{lstlisting}
 \fi}
 \fi}
 \caption{Example of using functions in \LangFun{}.}
 \caption{Example of using functions in \LangFun{}.}
-\label{fig:Rfun-function-example}
+\label{fig:Lfun-function-example}
 \end{figure}
 \end{figure}
 
 
 The definitional interpreter for \LangFun{} is in
 The definitional interpreter for \LangFun{} is in
-Figure~\ref{fig:interp-Rfun}. The case for the
+Figure~\ref{fig:interp-Lfun}. The case for the
 %
 %
 \racket{\code{ProgramDefsExp}}\python{\code{Module}}
 \racket{\code{ProgramDefsExp}}\python{\code{Module}}
 %
 %
@@ -13301,8 +13300,8 @@ this extended environment.
 \begin{figure}[tp]
 \begin{figure}[tp]
 {\if\edition\racketEd  
 {\if\edition\racketEd  
 \begin{lstlisting}
 \begin{lstlisting}
-(define interp-Rfun_class
-  (class interp-Lvec_class
+(define interp-Lfun-class
+  (class interp-Lvec-class
     (super-new)
     (super-new)
 
 
     (define/override ((interp-exp env) e)
     (define/override ((interp-exp env) e)
@@ -13341,8 +13340,8 @@ this extended environment.
            ((interp-exp top-level) body))]))
            ((interp-exp top-level) body))]))
     ))
     ))
 
 
-(define (interp-Rfun p)
-  (send (new interp-Rfun_class) interp-program p))
+(define (interp-Lfun p)
+  (send (new interp-Lfun-class) interp-program p))
 \end{lstlisting}
 \end{lstlisting}
 \fi}
 \fi}
 {\if\edition\pythonEd
 {\if\edition\pythonEd
@@ -13393,14 +13392,14 @@ class InterpLfun(InterpLtup):
 \end{lstlisting}
 \end{lstlisting}
 \fi}
 \fi}
 \caption{Interpreter for the \LangFun{} language.}
 \caption{Interpreter for the \LangFun{} language.}
-\label{fig:interp-Rfun}
+\label{fig:interp-Lfun}
 \end{figure}
 \end{figure}
 
 
 
 
 %\margincomment{TODO: explain type checker}
 %\margincomment{TODO: explain type checker}
 
 
 The type checker for \LangFun{} is in
 The type checker for \LangFun{} is in
-Figure~\ref{fig:type-check-Rfun}.  (We omit the code that parses
+Figure~\ref{fig:type-check-Lfun}.  (We omit the code that parses
 function parameters into the simpler abstract syntax.)  Similar to the
 function parameters into the simpler abstract syntax.)  Similar to the
 interpreter, the case for the
 interpreter, the case for the
 \racket{\code{ProgramDefsExp}}\python{\code{Module}}
 \racket{\code{ProgramDefsExp}}\python{\code{Module}}
@@ -13420,8 +13419,8 @@ a whole is the return type from the function type.
 \begin{figure}[tp]
 \begin{figure}[tp]
 {\if\edition\racketEd  
 {\if\edition\racketEd  
 \begin{lstlisting}[basicstyle=\ttfamily\footnotesize]
 \begin{lstlisting}[basicstyle=\ttfamily\footnotesize]
-(define type-check-Rfun_class
-  (class type-check-Lvec_class
+(define type-check-Lfun-class
+  (class type-check-Lvec-class
     (super-new)
     (super-new)
     (inherit check-type-equal?)
     (inherit check-type-equal?)
 
 
@@ -13471,8 +13470,8 @@ a whole is the return type from the function type.
          (check-type-equal? ty 'Integer body)
          (check-type-equal? ty 'Integer body)
          (ProgramDefsExp info ds^ body^)]))))
          (ProgramDefsExp info ds^ body^)]))))
 
 
-(define (type-check-Rfun p)
-  (send (new type-check-Rfun_class) type-check-program p))
+(define (type-check-Lfun p)
+  (send (new type-check-Lfun-class) type-check-program p))
 \end{lstlisting}
 \end{lstlisting}
 \fi}
 \fi}
 {\if\edition\pythonEd
 {\if\edition\pythonEd
@@ -13528,7 +13527,7 @@ class TypeCheckLfun(TypeCheckLtup):
 \end{lstlisting}
 \end{lstlisting}
 \fi}
 \fi}
 \caption{Type checker for the \LangFun{} language.}
 \caption{Type checker for the \LangFun{} language.}
-\label{fig:type-check-Rfun}
+\label{fig:type-check-Lfun}
 \end{figure}
 \end{figure}
 
 
 
 
@@ -13864,7 +13863,7 @@ is defined in Figure~\ref{fig:f1-syntax}.
 \end{minipage}
 \end{minipage}
 }
 }
 \caption{The abstract syntax \LangFunRef{}, an extension of \LangFun{}
 \caption{The abstract syntax \LangFunRef{}, an extension of \LangFun{}
-  (Figure~\ref{fig:Rfun-syntax}).}
+  (Figure~\ref{fig:Lfun-syntax}).}
 \label{fig:f1-syntax}
 \label{fig:f1-syntax}
 \end{figure}
 \end{figure}
 
 
@@ -13990,7 +13989,7 @@ and \racket{\code{Apply}}\python{\code{Call}} in the grammar for expressions.
 % TODO: Return?
 % TODO: Return?
 
 
 
 
-%% Figure~\ref{fig:Rfun-anf-syntax} defines the output language
+%% Figure~\ref{fig:Lfun-anf-syntax} defines the output language
 %% \LangFunANF{} of this pass.
 %% \LangFunANF{} of this pass.
 
 
 %% \begin{figure}[tp]
 %% \begin{figure}[tp]
@@ -14017,7 +14016,7 @@ and \racket{\code{Apply}}\python{\code{Call}} in the grammar for expressions.
 %% \end{minipage}
 %% \end{minipage}
 %% }
 %% }
 %% \caption{\LangFunANF{} is \LangFunRefAlloc{} in monadic normal form.}
 %% \caption{\LangFunANF{} is \LangFunRefAlloc{} in monadic normal form.}
-%% \label{fig:Rfun-anf-syntax}
+%% \label{fig:Lfun-anf-syntax}
 %% \end{figure}
 %% \end{figure}
 
 
 
 
@@ -14471,9 +14470,9 @@ previously created test programs.
 
 
 \begin{figure}[tbp]
 \begin{figure}[tbp]
 \begin{tikzpicture}[baseline=(current  bounding  box.center)]
 \begin{tikzpicture}[baseline=(current  bounding  box.center)]
-\node (Rfun) at (0,2)  {\large \LangFun{}};
-\node (Rfun-1) at (3,2)  {\large \LangFun{}};
-\node (Rfun-2) at (6,2)  {\large \LangFun{}};
+\node (Lfun) at (0,2)  {\large \LangFun{}};
+\node (Lfun-1) at (3,2)  {\large \LangFun{}};
+\node (Lfun-2) at (6,2)  {\large \LangFun{}};
 \node (F1-1) at (9,2)  {\large \LangFunRef{}};
 \node (F1-1) at (9,2)  {\large \LangFunRef{}};
 \node (F1-2) at (9,0)  {\large \LangFunRef{}};
 \node (F1-2) at (9,0)  {\large \LangFunRef{}};
 \node (F1-3) at (6,0)  {\large \LangFunRefAlloc{}};
 \node (F1-3) at (6,0)  {\large \LangFunRefAlloc{}};
@@ -14488,11 +14487,11 @@ previously created test programs.
 \node (x86-2-1) at (3,-6)  {\large \LangXIndCallVar{}};
 \node (x86-2-1) at (3,-6)  {\large \LangXIndCallVar{}};
 \node (x86-2-2) at (6,-6)  {\large \LangXIndCallVar{}};
 \node (x86-2-2) at (6,-6)  {\large \LangXIndCallVar{}};
 
 
-\path[->,bend left=15] (Rfun) edge [above] node
-     {\ttfamily\footnotesize shrink} (Rfun-1);
-\path[->,bend left=15] (Rfun-1) edge [above] node
-     {\ttfamily\footnotesize uniquify} (Rfun-2);
-\path[->,bend left=15] (Rfun-2) edge [above] node
+\path[->,bend left=15] (Lfun) edge [above] node
+     {\ttfamily\footnotesize shrink} (Lfun-1);
+\path[->,bend left=15] (Lfun-1) edge [above] node
+     {\ttfamily\footnotesize uniquify} (Lfun-2);
+\path[->,bend left=15] (Lfun-2) edge [above] node
      {\ttfamily\footnotesize ~~reveal\_functions} (F1-1);
      {\ttfamily\footnotesize ~~reveal\_functions} (F1-1);
 \path[->,bend left=15] (F1-1) edge [right] node
 \path[->,bend left=15] (F1-1) edge [right] node
      {\ttfamily\footnotesize limit\_functions} (F1-2);
      {\ttfamily\footnotesize limit\_functions} (F1-2);
@@ -14515,10 +14514,10 @@ previously created test programs.
 \path[->,bend right=15] (x86-4) edge [left] node {\ttfamily\footnotesize print-x86} (x86-5);
 \path[->,bend right=15] (x86-4) edge [left] node {\ttfamily\footnotesize print-x86} (x86-5);
 \end{tikzpicture}
 \end{tikzpicture}
 \caption{Diagram of the passes for \LangFun{}, a language with functions.}
 \caption{Diagram of the passes for \LangFun{}, a language with functions.}
-\label{fig:Rfun-passes}
+\label{fig:Lfun-passes}
 \end{figure}
 \end{figure}
 
 
-Figure~\ref{fig:Rfun-passes} gives an overview of the passes for
+Figure~\ref{fig:Lfun-passes} gives an overview of the passes for
 compiling \LangFun{} to x86.
 compiling \LangFun{} to x86.
 
 
 \section{An Example Translation}
 \section{An Example Translation}
@@ -14972,7 +14971,7 @@ syntax for function application.
 \fi}
 \fi}
 \end{minipage}
 \end{minipage}
 }
 }
-\caption{The concrete syntax of \LangLam{}, extending \LangFun{} (Figure~\ref{fig:Rfun-concrete-syntax}) 
+\caption{The concrete syntax of \LangLam{}, extending \LangFun{} (Figure~\ref{fig:Lfun-concrete-syntax}) 
   with \key{lambda}.}
   with \key{lambda}.}
 \label{fig:Rlam-concrete-syntax}
 \label{fig:Rlam-concrete-syntax}
 \end{figure}
 \end{figure}
@@ -15016,7 +15015,7 @@ syntax for function application.
 \fi}
 \fi}
 \end{minipage}
 \end{minipage}
 }
 }
-\caption{The abstract syntax of \LangLam{}, extending \LangFun{} (Figure~\ref{fig:Rfun-syntax}).}
+\caption{The abstract syntax of \LangLam{}, extending \LangFun{} (Figure~\ref{fig:Lfun-syntax}).}
 \label{fig:Rlam-syntax}
 \label{fig:Rlam-syntax}
 \end{figure}
 \end{figure}
 
 
@@ -15033,8 +15032,8 @@ interpret the body of the function.
 \begin{figure}[tbp]
 \begin{figure}[tbp]
 {\if\edition\racketEd 
 {\if\edition\racketEd 
 \begin{lstlisting}
 \begin{lstlisting}
-(define interp-Rlambda_class
-  (class interp-Rfun_class
+(define interp-Llambda-class
+  (class interp-Lfun-class
     (super-new)
     (super-new)
 
 
     (define/override (interp-op op)
     (define/override (interp-op op)
@@ -15055,7 +15054,7 @@ interpret the body of the function.
     ))
     ))
 
 
 (define (interp-Rlambda p)
 (define (interp-Rlambda p)
-  (send (new interp-Rlambda_class) interp-program p))
+  (send (new interp-Llambda-class) interp-program p))
 \end{lstlisting}
 \end{lstlisting}
 \fi}
 \fi}
 {\if\edition\pythonEd
 {\if\edition\pythonEd
@@ -16069,9 +16068,9 @@ $58$ from the tag.}
 
 
 \begin{figure}[p]
 \begin{figure}[p]
 \begin{tikzpicture}[baseline=(current  bounding  box.center)]
 \begin{tikzpicture}[baseline=(current  bounding  box.center)]
-\node (Rfun) at (0,2)  {\large \LangLam{}};
-\node (Rfun-2) at (3,2)  {\large \LangLam{}};
-\node (Rfun-3) at (6,2)  {\large \LangLam{}};
+\node (Lfun) at (0,2)  {\large \LangLam{}};
+\node (Lfun-2) at (3,2)  {\large \LangLam{}};
+\node (Lfun-3) at (6,2)  {\large \LangLam{}};
 \node (F1-0) at (9,2)  {\large \LangLamFunRef{}};
 \node (F1-0) at (9,2)  {\large \LangLamFunRef{}};
 \node (F1-1) at (12,0)  {\large \LangLamFunRef{}};
 \node (F1-1) at (12,0)  {\large \LangLamFunRef{}};
 \node (F1-2) at (9,0)  {\large \LangFunRef{}};
 \node (F1-2) at (9,0)  {\large \LangFunRef{}};
@@ -16087,11 +16086,11 @@ $58$ from the tag.}
 \node (x86-4) at (9,-4) {\large \LangXIndCall{}};
 \node (x86-4) at (9,-4) {\large \LangXIndCall{}};
 \node (x86-5) at (9,-6) {\large \LangXIndCall{}};
 \node (x86-5) at (9,-6) {\large \LangXIndCall{}};
 
 
-\path[->,bend left=15] (Rfun) edge [above] node
-     {\ttfamily\footnotesize shrink} (Rfun-2);
-\path[->,bend left=15] (Rfun-2) edge [above] node
-     {\ttfamily\footnotesize uniquify} (Rfun-3);
-\path[->,bend left=15] (Rfun-3) edge [above] node
+\path[->,bend left=15] (Lfun) edge [above] node
+     {\ttfamily\footnotesize shrink} (Lfun-2);
+\path[->,bend left=15] (Lfun-2) edge [above] node
+     {\ttfamily\footnotesize uniquify} (Lfun-3);
+\path[->,bend left=15] (Lfun-3) edge [above] node
      {\ttfamily\footnotesize reveal\_functions} (F1-0);
      {\ttfamily\footnotesize reveal\_functions} (F1-0);
 \path[->,bend left=15] (F1-0) edge [right] node
 \path[->,bend left=15] (F1-0) edge [right] node
      {\ttfamily\footnotesize convert\_assign.} (F1-1);
      {\ttfamily\footnotesize convert\_assign.} (F1-1);
@@ -17034,15 +17033,15 @@ Figure~\ref{fig:type-check-Rany}
 \racket{ and uses the auxiliary functions in
 \racket{ and uses the auxiliary functions in
 Figure~\ref{fig:type-check-Rany-aux}}.
 Figure~\ref{fig:type-check-Rany-aux}}.
 %
 %
-The interpreter for \LangAny{} is in Figure~\ref{fig:interp-Rany} and
-its auxiliary functions are in Figure~\ref{fig:interp-Rany-aux}.
+The interpreter for \LangAny{} is in Figure~\ref{fig:interp-Lany} and
+its auxiliary functions are in Figure~\ref{fig:interp-Lany-aux}.
 
 
 
 
 \begin{figure}[btp]
 \begin{figure}[btp]
 {\if\edition\racketEd
 {\if\edition\racketEd
 \begin{lstlisting}[basicstyle=\ttfamily\small]
 \begin{lstlisting}[basicstyle=\ttfamily\small]
-(define type-check-Rany_class
-  (class type-check-Rlambda_class
+(define type-check-Rany-class
+  (class type-check-Rlambda-class
     (super-new)
     (super-new)
     (inherit check-type-equal?)
     (inherit check-type-equal?)
 
 
@@ -17211,8 +17210,8 @@ class TypeCheckLany(TypeCheckLlambda):
 \begin{figure}[btp]
 \begin{figure}[btp]
 {\if\edition\racketEd
 {\if\edition\racketEd
 \begin{lstlisting}
 \begin{lstlisting}
-(define interp-Rany_class
-  (class interp-Rlambda_class
+(define interp-Lany-class
+  (class interp-Llambda-class
     (super-new)
     (super-new)
 
 
     (define/override (interp-op op)
     (define/override (interp-op op)
@@ -17249,8 +17248,8 @@ class TypeCheckLany(TypeCheckLlambda):
         [else ((super interp-exp env) e)]))
         [else ((super interp-exp env) e)]))
     ))
     ))
 
 
-(define (interp-Rany p)
-  (send (new interp-Rany_class) interp-program p))
+(define (interp-Lany p)
+  (send (new interp-Lany-class) interp-program p))
 \end{lstlisting}
 \end{lstlisting}
 \fi}
 \fi}
 {\if\edition\pythonEd
 {\if\edition\pythonEd
@@ -17326,7 +17325,7 @@ class InterpLany(InterpLlambda):
 \end{lstlisting}
 \end{lstlisting}
 \fi}
 \fi}
 \caption{Interpreter for \LangAny{}.}
 \caption{Interpreter for \LangAny{}.}
-\label{fig:interp-Rany}
+\label{fig:interp-Lany}
 \end{figure}
 \end{figure}
 
 
 \begin{figure}[tbp]
 \begin{figure}[tbp]
@@ -17392,7 +17391,7 @@ class InterpLany(InterpLlambda):
 \end{lstlisting}
 \end{lstlisting}
 \fi}
 \fi}
   \caption{Auxiliary functions for interpreting \LangAny{}.}
   \caption{Auxiliary functions for interpreting \LangAny{}.}
-  \label{fig:interp-Rany-aux}
+  \label{fig:interp-Lany-aux}
 \end{figure}
 \end{figure}
 
 
 \clearpage
 \clearpage
@@ -18208,13 +18207,13 @@ completion without error.
 
 
 \begin{figure}[p]
 \begin{figure}[p]
 \begin{tikzpicture}[baseline=(current  bounding  box.center)]
 \begin{tikzpicture}[baseline=(current  bounding  box.center)]
-\node (Rfun) at (0,4)  {\large \LangDyn{}};
-\node (Rfun-2) at (3,4)  {\large \LangDyn{}};
-\node (Rfun-3) at (6,4)  {\large \LangDyn{}};
-\node (Rfun-4) at (9,4)  {\large \LangDynFunRef{}};
-\node (Rfun-5) at (9,2)  {\large \LangAnyFunRef{}};
-\node (Rfun-6) at (12,2)  {\large \LangAnyFunRef{}};
-\node (Rfun-7) at (12,0)  {\large \LangAnyFunRef{}};
+\node (Lfun) at (0,4)  {\large \LangDyn{}};
+\node (Lfun-2) at (3,4)  {\large \LangDyn{}};
+\node (Lfun-3) at (6,4)  {\large \LangDyn{}};
+\node (Lfun-4) at (9,4)  {\large \LangDynFunRef{}};
+\node (Lfun-5) at (9,2)  {\large \LangAnyFunRef{}};
+\node (Lfun-6) at (12,2)  {\large \LangAnyFunRef{}};
+\node (Lfun-7) at (12,0)  {\large \LangAnyFunRef{}};
 
 
 \node (F1-2) at (9,0)  {\large \LangAnyFunRef{}};
 \node (F1-2) at (9,0)  {\large \LangAnyFunRef{}};
 \node (F1-3) at (6,0)  {\large \LangAnyFunRef{}};
 \node (F1-3) at (6,0)  {\large \LangAnyFunRef{}};
@@ -18229,20 +18228,20 @@ completion without error.
 \node (x86-4) at (9,-4) {\large \LangXIndCall{}};
 \node (x86-4) at (9,-4) {\large \LangXIndCall{}};
 \node (x86-5) at (9,-6) {\large \LangXIndCall{}};
 \node (x86-5) at (9,-6) {\large \LangXIndCall{}};
 
 
-\path[->,bend left=15] (Rfun) edge [above] node
-     {\ttfamily\footnotesize shrink} (Rfun-2);
-\path[->,bend left=15] (Rfun-2) edge [above] node
-     {\ttfamily\footnotesize uniquify} (Rfun-3);
-\path[->,bend left=15] (Rfun-3) edge [above] node
-     {\ttfamily\footnotesize reveal\_functions} (Rfun-4);
-\path[->,bend right=15] (Rfun-4) edge [left] node
-     {\ttfamily\footnotesize cast\_insert} (Rfun-5);
-\path[->,bend left=15] (Rfun-5) edge [above] node
-     {\ttfamily\footnotesize reveal\_casts} (Rfun-6);
-\path[->,bend left=15] (Rfun-6) edge [left] node
-     {\ttfamily\footnotesize convert\_assign.} (Rfun-7);
+\path[->,bend left=15] (Lfun) edge [above] node
+     {\ttfamily\footnotesize shrink} (Lfun-2);
+\path[->,bend left=15] (Lfun-2) edge [above] node
+     {\ttfamily\footnotesize uniquify} (Lfun-3);
+\path[->,bend left=15] (Lfun-3) edge [above] node
+     {\ttfamily\footnotesize reveal\_functions} (Lfun-4);
+\path[->,bend right=15] (Lfun-4) edge [left] node
+     {\ttfamily\footnotesize cast\_insert} (Lfun-5);
+\path[->,bend left=15] (Lfun-5) edge [above] node
+     {\ttfamily\footnotesize reveal\_casts} (Lfun-6);
+\path[->,bend left=15] (Lfun-6) edge [left] node
+     {\ttfamily\footnotesize convert\_assign.} (Lfun-7);
      
      
-\path[->,bend left=15] (Rfun-7) edge [below] node
+\path[->,bend left=15] (Lfun-7) edge [below] node
      {\ttfamily\footnotesize convert\_to\_clos.} (F1-2);
      {\ttfamily\footnotesize convert\_to\_clos.} (F1-2);
 \path[->,bend right=15] (F1-2) edge [above] node
 \path[->,bend right=15] (F1-2) edge [above] node
      {\ttfamily\footnotesize limit\_fun.} (F1-3);
      {\ttfamily\footnotesize limit\_fun.} (F1-3);
@@ -18540,8 +18539,8 @@ and \ref{fig:type-check-Rgradual-3}.
 
 
 \begin{figure}[tbp]
 \begin{figure}[tbp]
 \begin{lstlisting}[basicstyle=\ttfamily\scriptsize]
 \begin{lstlisting}[basicstyle=\ttfamily\scriptsize]
-(define type-check-gradual_class
-  (class type-check-Rwhile_class
+(define type-check-gradual-class
+  (class type-check-Lwhile-class
     (super-new)
     (super-new)
     (inherit operator-types type-predicates)
     (inherit operator-types type-predicates)
 
 
@@ -18784,11 +18783,11 @@ casts involving simple types such as \code{Integer} and
 \code{Boolean}.  For example, a cast from \code{Integer} to \code{Any}
 \code{Boolean}.  For example, a cast from \code{Integer} to \code{Any}
 can be accomplished with the \code{Inject} operator of \LangAny{}, which
 can be accomplished with the \code{Inject} operator of \LangAny{}, which
 puts the integer into a tagged value
 puts the integer into a tagged value
-(Figure~\ref{fig:interp-Rany}). Similarly, a cast from \code{Any} to
+(Figure~\ref{fig:interp-Lany}). Similarly, a cast from \code{Any} to
 \code{Integer} is accomplished with the \code{Project} operator, that
 \code{Integer} is accomplished with the \code{Project} operator, that
 is, by checking the value's tag and either retrieving the underlying
 is, by checking the value's tag and either retrieving the underlying
 integer or signaling an error if it the tag is not the one for
 integer or signaling an error if it the tag is not the one for
-integers (Figure~\ref{fig:interp-Rany-aux}).
+integers (Figure~\ref{fig:interp-Lany-aux}).
 %
 %
 Things get more interesting for higher-order casts, that is, casts
 Things get more interesting for higher-order casts, that is, casts
 involving function or vector types.
 involving function or vector types.
@@ -18931,15 +18930,15 @@ of the kinds of casts that we've discussed in this section.
 \end{figure}
 \end{figure}
 
 
 The interpreter for \LangCast{} is defined in
 The interpreter for \LangCast{} is defined in
-Figure~\ref{fig:interp-Rcast}, with the case for \code{Cast}
+Figure~\ref{fig:interp-Lcast}, with the case for \code{Cast}
 dispatching to \code{apply-cast}. To handle the addition of vector
 dispatching to \code{apply-cast}. To handle the addition of vector
 proxies, we update the vector primitives in \code{interp-op} using the
 proxies, we update the vector primitives in \code{interp-op} using the
 functions in Figure~\ref{fig:guarded-vector}.
 functions in Figure~\ref{fig:guarded-vector}.
 
 
 \begin{figure}[tbp]
 \begin{figure}[tbp]
 \begin{lstlisting}[basicstyle=\ttfamily\footnotesize]
 \begin{lstlisting}[basicstyle=\ttfamily\footnotesize]
-(define interp-Rcast_class
-  (class interp-Rwhile_class
+(define interp-Lcast-class
+  (class interp-Lwhile-class
     (super-new)
     (super-new)
     (inherit apply-fun apply-inject apply-project)
     (inherit apply-fun apply-inject apply-project)
 
 
@@ -18968,11 +18967,11 @@ functions in Figure~\ref{fig:guarded-vector}.
         [else ((super interp-exp env) e)]))
         [else ((super interp-exp env) e)]))
     ))
     ))
 
 
-(define (interp-Rcast p)
-  (send (new interp-Rcast_class) interp-program p))
+(define (interp-Lcast p)
+  (send (new interp-Lcast-class) interp-program p))
 \end{lstlisting}
 \end{lstlisting}
 \caption{The interpreter for \LangCast{}.}
 \caption{The interpreter for \LangCast{}.}
-  \label{fig:interp-Rcast}
+  \label{fig:interp-Lcast}
 \end{figure}
 \end{figure}
 
 
 
 
@@ -19349,12 +19348,12 @@ be translated in a similar way.
 \begin{tikzpicture}[baseline=(current  bounding  box.center)]
 \begin{tikzpicture}[baseline=(current  bounding  box.center)]
 \node (Rgradual) at (6,4)  {\large \LangGrad{}};
 \node (Rgradual) at (6,4)  {\large \LangGrad{}};
 \node (Rgradualp) at (3,4)  {\large \LangCast{}};
 \node (Rgradualp) at (3,4)  {\large \LangCast{}};
-\node (Rwhilepp) at (0,4)  {\large \LangProxy{}};
-\node (Rwhileproxy) at (0,2)  {\large \LangPVec{}};
-\node (Rwhileproxy-2) at (3,2)  {\large \LangPVec{}};
-\node (Rwhileproxy-3) at (6,2)  {\large \LangPVec{}};
-\node (Rwhileproxy-4) at (9,2)  {\large \LangPVecFunRef{}};
-\node (Rwhileproxy-5) at (12,2)  {\large \LangPVecFunRef{}};
+\node (Lwhilepp) at (0,4)  {\large \LangProxy{}};
+\node (Lwhileproxy) at (0,2)  {\large \LangPVec{}};
+\node (Lwhileproxy-2) at (3,2)  {\large \LangPVec{}};
+\node (Lwhileproxy-3) at (6,2)  {\large \LangPVec{}};
+\node (Lwhileproxy-4) at (9,2)  {\large \LangPVecFunRef{}};
+\node (Lwhileproxy-5) at (12,2)  {\large \LangPVecFunRef{}};
 \node (F1-1) at (12,0)  {\large \LangPVecFunRef{}};
 \node (F1-1) at (12,0)  {\large \LangPVecFunRef{}};
 \node (F1-2) at (9,0)  {\large \LangPVecFunRef{}};
 \node (F1-2) at (9,0)  {\large \LangPVecFunRef{}};
 \node (F1-3) at (6,0)  {\large \LangPVecFunRef{}};
 \node (F1-3) at (6,0)  {\large \LangPVecFunRef{}};
@@ -19373,18 +19372,18 @@ be translated in a similar way.
 \path[->,bend right=15] (Rgradual) edge [above] node
 \path[->,bend right=15] (Rgradual) edge [above] node
      {\ttfamily\footnotesize type\_check} (Rgradualp);
      {\ttfamily\footnotesize type\_check} (Rgradualp);
 \path[->,bend right=15] (Rgradualp) edge [above] node
 \path[->,bend right=15] (Rgradualp) edge [above] node
-     {\ttfamily\footnotesize lower\_casts} (Rwhilepp);
-\path[->,bend right=15] (Rwhilepp) edge [right] node
-     {\ttfamily\footnotesize differentiate\_proxies} (Rwhileproxy);
-\path[->,bend left=15] (Rwhileproxy) edge [above] node
-     {\ttfamily\footnotesize shrink} (Rwhileproxy-2);
-\path[->,bend left=15] (Rwhileproxy-2) edge [above] node
-     {\ttfamily\footnotesize uniquify} (Rwhileproxy-3);
-\path[->,bend left=15] (Rwhileproxy-3) edge [above] node
-     {\ttfamily\footnotesize reveal\_functions} (Rwhileproxy-4);
-\path[->,bend left=15] (Rwhileproxy-4) edge [above] node
-     {\ttfamily\footnotesize reveal\_casts} (Rwhileproxy-5);
-\path[->,bend left=15] (Rwhileproxy-5) edge [left] node
+     {\ttfamily\footnotesize lower\_casts} (Lwhilepp);
+\path[->,bend right=15] (Lwhilepp) edge [right] node
+     {\ttfamily\footnotesize differentiate\_proxies} (Lwhileproxy);
+\path[->,bend left=15] (Lwhileproxy) edge [above] node
+     {\ttfamily\footnotesize shrink} (Lwhileproxy-2);
+\path[->,bend left=15] (Lwhileproxy-2) edge [above] node
+     {\ttfamily\footnotesize uniquify} (Lwhileproxy-3);
+\path[->,bend left=15] (Lwhileproxy-3) edge [above] node
+     {\ttfamily\footnotesize reveal\_functions} (Lwhileproxy-4);
+\path[->,bend left=15] (Lwhileproxy-4) edge [above] node
+     {\ttfamily\footnotesize reveal\_casts} (Lwhileproxy-5);
+\path[->,bend left=15] (Lwhileproxy-5) edge [left] node
      {\ttfamily\footnotesize convert\_assignments} (F1-1);
      {\ttfamily\footnotesize convert\_assignments} (F1-1);
 \path[->,bend left=15] (F1-1) edge [below] node
 \path[->,bend left=15] (F1-1) edge [below] node
      {\ttfamily\footnotesize convert\_to\_clos.} (F1-2);
      {\ttfamily\footnotesize convert\_to\_clos.} (F1-2);
@@ -19686,7 +19685,7 @@ example is listed in Figure~\ref{fig:map-type-check}.
 \begin{figure}[tbp]
 \begin{figure}[tbp]
 \begin{lstlisting}[basicstyle=\ttfamily\scriptsize]
 \begin{lstlisting}[basicstyle=\ttfamily\scriptsize]
 (define type-check-poly-class
 (define type-check-poly-class
-  (class type-check-Rwhile-class
+  (class type-check-Lwhile-class
     (super-new)
     (super-new)
     (inherit check-type-equal?)
     (inherit check-type-equal?)
   
   
@@ -20027,12 +20026,12 @@ annotations and the body.
 \node (Rpoly) at (9,4)  {\large \LangPoly{}};
 \node (Rpoly) at (9,4)  {\large \LangPoly{}};
 \node (Rpolyp) at (6,4)  {\large \LangInst{}};
 \node (Rpolyp) at (6,4)  {\large \LangInst{}};
 \node (Rgradualp) at (3,4)  {\large \LangCast{}};
 \node (Rgradualp) at (3,4)  {\large \LangCast{}};
-\node (Rwhilepp) at (0,4)  {\large \LangProxy{}};
-\node (Rwhileproxy) at (0,2)  {\large \LangPVec{}};
-\node (Rwhileproxy-2) at (3,2)  {\large \LangPVec{}};
-\node (Rwhileproxy-3) at (6,2)  {\large \LangPVec{}};
-\node (Rwhileproxy-4) at (9,2)  {\large \LangPVecFunRef{}};
-\node (Rwhileproxy-5) at (12,2)  {\large \LangPVecFunRef{}};
+\node (Lwhilepp) at (0,4)  {\large \LangProxy{}};
+\node (Lwhileproxy) at (0,2)  {\large \LangPVec{}};
+\node (Lwhileproxy-2) at (3,2)  {\large \LangPVec{}};
+\node (Lwhileproxy-3) at (6,2)  {\large \LangPVec{}};
+\node (Lwhileproxy-4) at (9,2)  {\large \LangPVecFunRef{}};
+\node (Lwhileproxy-5) at (12,2)  {\large \LangPVecFunRef{}};
 \node (F1-1) at (12,0)  {\large \LangPVecFunRef{}};
 \node (F1-1) at (12,0)  {\large \LangPVecFunRef{}};
 \node (F1-2) at (9,0)  {\large \LangPVecFunRef{}};
 \node (F1-2) at (9,0)  {\large \LangPVecFunRef{}};
 \node (F1-3) at (6,0)  {\large \LangPVecFunRef{}};
 \node (F1-3) at (6,0)  {\large \LangPVecFunRef{}};
@@ -20053,18 +20052,18 @@ annotations and the body.
 \path[->,bend right=15] (Rpolyp) edge [above] node
 \path[->,bend right=15] (Rpolyp) edge [above] node
      {\ttfamily\footnotesize erase\_types} (Rgradualp);
      {\ttfamily\footnotesize erase\_types} (Rgradualp);
 \path[->,bend right=15] (Rgradualp) edge [above] node
 \path[->,bend right=15] (Rgradualp) edge [above] node
-     {\ttfamily\footnotesize lower\_casts} (Rwhilepp);
-\path[->,bend right=15] (Rwhilepp) edge [right] node
-     {\ttfamily\footnotesize differentiate\_proxies} (Rwhileproxy);
-\path[->,bend left=15] (Rwhileproxy) edge [above] node
-     {\ttfamily\footnotesize shrink} (Rwhileproxy-2);
-\path[->,bend left=15] (Rwhileproxy-2) edge [above] node
-     {\ttfamily\footnotesize uniquify} (Rwhileproxy-3);
-\path[->,bend left=15] (Rwhileproxy-3) edge [above] node
-     {\ttfamily\footnotesize reveal\_functions} (Rwhileproxy-4);
-\path[->,bend left=15] (Rwhileproxy-4) edge [above] node
-     {\ttfamily\footnotesize reveal\_casts} (Rwhileproxy-5);
-\path[->,bend left=15] (Rwhileproxy-5) edge [left] node
+     {\ttfamily\footnotesize lower\_casts} (Lwhilepp);
+\path[->,bend right=15] (Lwhilepp) edge [right] node
+     {\ttfamily\footnotesize differentiate\_proxies} (Lwhileproxy);
+\path[->,bend left=15] (Lwhileproxy) edge [above] node
+     {\ttfamily\footnotesize shrink} (Lwhileproxy-2);
+\path[->,bend left=15] (Lwhileproxy-2) edge [above] node
+     {\ttfamily\footnotesize uniquify} (Lwhileproxy-3);
+\path[->,bend left=15] (Lwhileproxy-3) edge [above] node
+     {\ttfamily\footnotesize reveal\_functions} (Lwhileproxy-4);
+\path[->,bend left=15] (Lwhileproxy-4) edge [above] node
+     {\ttfamily\footnotesize reveal\_casts} (Lwhileproxy-5);
+\path[->,bend left=15] (Lwhileproxy-5) edge [left] node
      {\ttfamily\footnotesize convert\_assignments} (F1-1);
      {\ttfamily\footnotesize convert\_assignments} (F1-1);
 \path[->,bend left=15] (F1-1) edge [below] node
 \path[->,bend left=15] (F1-1) edge [below] node
      {\ttfamily\footnotesize convert\_to\_clos.} (F1-2);
      {\ttfamily\footnotesize convert\_to\_clos.} (F1-2);