|
@@ -5736,17 +5736,17 @@ The way around this problem is to include information about a value's
|
|
|
runtime type in the value itself, so that this information can be
|
|
|
inspected by operators such as \code{not}. In particular, we shall
|
|
|
steal the 3 right-most bits from our 64-bit values to encode the
|
|
|
-runtime type. We shall use $000$ to identify integers, $001$ for
|
|
|
-Booleans, $010$ for vectors, $011$ for procedures, and $100$ for the
|
|
|
+runtime type. We shall use $001$ to identify integers, $100$ for
|
|
|
+Booleans, $010$ for vectors, $011$ for procedures, and $101$ for the
|
|
|
void value. We shall refer to these 3 bits as the \emph{tag} and we
|
|
|
define the following auxilliary function.
|
|
|
\begin{align*}
|
|
|
-\itm{tagof}(\key{Integer}) &= 000 \\
|
|
|
-\itm{tagof}(\key{Boolean}) &= 001 \\
|
|
|
+\itm{tagof}(\key{Integer}) &= 001 \\
|
|
|
+\itm{tagof}(\key{Boolean}) &= 100 \\
|
|
|
\itm{tagof}((\key{Vector} \ldots)) &= 010 \\
|
|
|
\itm{tagof}((\key{Vectorof} \ldots)) &= 010 \\
|
|
|
\itm{tagof}((\ldots \key{->} \ldots)) &= 011 \\
|
|
|
-\itm{tagof}(\key{Void}) &= 100
|
|
|
+\itm{tagof}(\key{Void}) &= 101
|
|
|
\end{align*}
|
|
|
(We shall say more about the new \key{Vectorof} type shortly.)
|
|
|
This stealing of 3 bits comes at some
|