\section{Module \ocamlinlinecode{Recent}}\label{Recent}%
\label{Recent--module-type-S}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[Recent-module-type-S]{\ocamlinlinecode{S}}}\label{Recent-module-type-S}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\end{ocamlindent}%
\ocamlcodefragment{\ocamltag{keyword}{end}}\\
\label{Recent--module-type-S1}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[Recent-module-type-S1]{\ocamlinlinecode{S1}}}\label{Recent-module-type-S1}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\subsubsection{Parameters\label{Recent-module-type-S1--parameters}}%
\label{Recent-module-type-S1--argument-1-_}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Recent-module-type-S1-argument-1-_]{\ocamlinlinecode{\_\allowbreak{}}}}\label{Recent-module-type-S1-argument-1-_}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\end{ocamlindent}%
\ocamlcodefragment{\ocamltag{keyword}{end}}\\
\subsubsection{Signature\label{Recent-module-type-S1--signature}}%
\end{ocamlindent}%
\ocamlcodefragment{\ocamltag{keyword}{end}}\\
\label{Recent--type-variant}\ocamlcodefragment{\ocamltag{keyword}{type} variant = }\begin{ocamlindent}\ocamlcodefragment{| \ocamltag{constructor}{A}}\label{Recent--type-variant.A}%
\begin{ocamlindent}\end{ocamlindent}%
\ocamlcodefragment{| \ocamltag{constructor}{B} \ocamltag{keyword}{of} int}\label{Recent--type-variant.B}%
\begin{ocamlindent}\end{ocamlindent}%
\ocamlcodefragment{| \ocamltag{constructor}{C}}\label{Recent--type-variant.C}%
\begin{ocamlindent}foo\end{ocamlindent}%
\ocamlcodefragment{| \ocamltag{constructor}{D}}\label{Recent--type-variant.D}%
\begin{ocamlindent}\emph{bar}\end{ocamlindent}%
\ocamlcodefragment{| \ocamltag{constructor}{E} \ocamltag{keyword}{of} \{}\\
\begin{ocamltabular}{p{1.000\textwidth}}\ocamlinlinecode{a : int;\allowbreak{}}\label{Recent--type-variant.a}\\
\end{ocamltabular}%
\\
\ocamlcodefragment{\}}\label{Recent--type-variant.E}%
\begin{ocamlindent}\end{ocamlindent}%
\end{ocamlindent}%
\label{Recent--type-gadt}\ocamlcodefragment{\ocamltag{keyword}{type} \_\allowbreak{} gadt = }\begin{ocamlindent}\ocamlcodefragment{| \ocamltag{constructor}{A} : int \hyperref[Recent--type-gadt]{\ocamlinlinecode{gadt}}}\label{Recent--type-gadt.A}%
\begin{ocamlindent}\end{ocamlindent}%
\ocamlcodefragment{| \ocamltag{constructor}{B} : int \ocamltag{arrow}{$\rightarrow$} string \hyperref[Recent--type-gadt]{\ocamlinlinecode{gadt}}}\label{Recent--type-gadt.B}%
\begin{ocamlindent}foo\end{ocamlindent}%
\ocamlcodefragment{| \ocamltag{constructor}{C} : \{}\\
\begin{ocamltabular}{p{1.000\textwidth}}\ocamlinlinecode{a : int;\allowbreak{}}\label{Recent--type-gadt.a}\\
\end{ocamltabular}%
\\
\ocamlcodefragment{\} \ocamltag{arrow}{$\rightarrow$} unit \hyperref[Recent--type-gadt]{\ocamlinlinecode{gadt}}}\label{Recent--type-gadt.C}%
\begin{ocamlindent}\end{ocamlindent}%
\end{ocamlindent}%
\label{Recent--type-polymorphic_variant}\ocamlcodefragment{\ocamltag{keyword}{type} polymorphic\_\allowbreak{}variant = [ }\\
\begin{ocamltabular}{p{0.500\textwidth}p{0.500\textwidth}}\ocamlcodefragment{| `A}\label{Recent--type-polymorphic_variant.A}& \\
\ocamlcodefragment{| `B \ocamltag{keyword}{of} int}\label{Recent--type-polymorphic_variant.B}& \\
\ocamlcodefragment{| `C}\label{Recent--type-polymorphic_variant.C}& foo\\
\ocamlcodefragment{| `D}\label{Recent--type-polymorphic_variant.D}& bar\\
\end{ocamltabular}%
\\
\ocamlcodefragment{ ]}\\
\label{Recent--type-empty_variant}\ocamlcodefragment{\ocamltag{keyword}{type} empty\_\allowbreak{}variant = |}\\
\label{Recent--type-nonrec_}\ocamlcodefragment{\ocamltag{keyword}{type} \ocamltag{keyword}{nonrec} nonrec\_\allowbreak{} = int}\\
\label{Recent--type-empty_conj}\ocamlcodefragment{\ocamltag{keyword}{type} empty\_\allowbreak{}conj = }\\
\begin{ocamltabular}{p{1.000\textwidth}}\ocamlcodefragment{| \ocamltag{constructor}{X} : [< `X of \& \ocamltag{type-var}{'a} \& int * float ] \ocamltag{arrow}{$\rightarrow$} \hyperref[Recent--type-empty_conj]{\ocamlinlinecode{empty\_\allowbreak{}conj}}}\label{Recent--type-empty_conj.X}\\
\end{ocamltabular}%
\\
\label{Recent--type-conj}\ocamlcodefragment{\ocamltag{keyword}{type} conj = }\\
\begin{ocamltabular}{p{1.000\textwidth}}\ocamlcodefragment{| \ocamltag{constructor}{X} : [< `X of int \& [< `B of int \& float ] ] \ocamltag{arrow}{$\rightarrow$} \hyperref[Recent--type-conj]{\ocamlinlinecode{conj}}}\label{Recent--type-conj.X}\\
\end{ocamltabular}%
\\
\label{Recent--val-empty_conj}\ocamlcodefragment{\ocamltag{keyword}{val} empty\_\allowbreak{}conj : [< `X of \& \ocamltag{type-var}{'a} \& int * float ]}\\
\label{Recent--val-conj}\ocamlcodefragment{\ocamltag{keyword}{val} conj : [< `X of int \& [< `B of int \& float ] ]}\\
\label{Recent--module-Z}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Recent-Z]{\ocamlinlinecode{Z}}}\label{Recent-Z}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Recent-Z--module-Y}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Recent-Z-Y]{\ocamlinlinecode{Y}}}\label{Recent-Z-Y}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Recent-Z-Y--module-X}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Recent-Z-Y-X]{\ocamlinlinecode{X}}}\label{Recent-Z-Y-X}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Recent-Z-Y-X--type-t}\ocamlcodefragment{\ocamltag{keyword}{type} 'a t}\\
\end{ocamlindent}%
\ocamlcodefragment{\ocamltag{keyword}{end}}\\
\end{ocamlindent}%
\ocamlcodefragment{\ocamltag{keyword}{end}}\\
\end{ocamlindent}%
\ocamlcodefragment{\ocamltag{keyword}{end}}\\
\label{Recent--module-X}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Recent-X]{\ocamlinlinecode{X}}}\label{Recent-X}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Recent-X--module-L}\ocamlcodefragment{\ocamltag{keyword}{module} L := \hyperref[Recent-Z-Y]{\ocamlinlinecode{Z.\allowbreak{}Y}}}\\
\label{Recent-X--type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = int \hyperref[Recent-Z-Y-X--type-t]{\ocamlinlinecode{L.\allowbreak{}X.\allowbreak{}t}}}\\
\label{Recent-X--type-u}\ocamlcodefragment{\ocamltag{keyword}{type} u := int}\\
\label{Recent-X--type-v}\ocamlcodefragment{\ocamltag{keyword}{type} v = \hyperref[Recent-X--type-u]{\ocamlinlinecode{u}} \hyperref[Recent-Z-Y-X--type-t]{\ocamlinlinecode{L.\allowbreak{}X.\allowbreak{}t}}}\\
\end{ocamlindent}%
\ocamlcodefragment{\ocamltag{keyword}{end}}\\
\label{Recent--module-type-PolyS}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[Recent-module-type-PolyS]{\ocamlinlinecode{PolyS}}}\label{Recent-module-type-PolyS}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Recent-module-type-PolyS--type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = [ }\\
\begin{ocamltabular}{p{1.000\textwidth}}\ocamlcodefragment{| `A}\label{Recent-module-type-PolyS--type-t.A}\\
\ocamlcodefragment{| `B}\label{Recent-module-type-PolyS--type-t.B}\\
\end{ocamltabular}%
\\
\ocamlcodefragment{ ]}\\
\end{ocamlindent}%
\ocamlcodefragment{\ocamltag{keyword}{end}}\\
\label{Recent--type-phantom}\ocamlcodefragment{\ocamltag{keyword}{type} +-'a phantom}\\
\label{Recent--val-f}\ocamlcodefragment{\ocamltag{keyword}{val} f : (\ocamltag{label}{x}:int * \ocamltag{label}{y}:int) \hyperref[Recent--type-phantom]{\ocamlinlinecode{phantom}} \ocamltag{arrow}{$\rightarrow$} unit}\\


