@@ -23436,7 +23436,7 @@ \subsection{Same Static Type}
23436
23436
In short, this transformation adds a unique prefix to every type name
23437
23437
which is resolved to a top-level declaration
23438
23438
(in the same library or in an imported library).
23439
-
23439
+
23440
23440
This transformation does not change any occurrence of \VOID,
23441
23441
and does not need to;
23442
23442
\VOID{} is a reserved word, not a type identifier.
@@ -23458,7 +23458,8 @@ \subsection{Same Static Type}
23458
23458
23459
23459
\LMHash{}%
23460
23460
When we say that two types $T_1$ and $T_2$ have the
23461
- \IndexCustom{same explicitly resolved syntax}{type!same explicitly resolved syntax},
23461
+ \IndexCustom{same explicitly resolved syntax}{%
23462
+ type!same explicitly resolved syntax},
23462
23463
it refers to the situation where the current library
23463
23464
and all libraries which are reachable via one or more imports
23464
23465
have been transformed as described above,
@@ -23474,7 +23475,7 @@ \subsection{Same Static Type}
23474
23475
A function type is the only kind of type that declares type variables.
23475
23476
For example,
23476
23477
\code{List<X>\,\,\FUNCTION<X>({X\,\,arg})}
23477
- can be turned into
23478
+ can be turned into
23478
23479
\code{List<Y>\,\,\FUNCTION<Y>({Y\,\,arg})}
23479
23480
by alpha conversion.%
23480
23481
}
@@ -23895,7 +23896,7 @@ \section*{Appendix: Algorithmic Subtyping}
23895
23896
\item
23896
23897
If $T_0$ is \code{($V_0$, \ldots, $V_n$, \{$V_{n+1} d_{n+1}$, \ldots, $V_m d_m$\})}
23897
23898
and $T_1$ is \code{($S_0$, \ldots, $S_n$, \{$S_{n+1} d_{n+1}$, \ldots, $S_m d_m$\})}
23898
- then \SubtypeNE{T_0}{T_1} if{}f \SubtypeNE{V_i}{S_i} for each $i \in 0 .. m$.
23899
+ then \SubtypeNE{T_0}{T_1} if{}f \SubtypeNE{V_i}{S_i} for each $i \in 0 .. m$.
23899
23900
\end{itemize}
23900
23901
23901
23902
0 commit comments