\section{Module \ocamlinlinecode{Module}}\label{Module}%
Foo.

\label{Module--val-foo}\ocamlcodefragment{\ocamltag{keyword}{val} foo : unit}\begin{ocamlindent}The module needs at least one signature item, otherwise a bug causes the compiler to drop the module comment (above). See \href{https://caml.inria.fr/mantis/view.php?id=7701}{https://caml.inria.fr/mantis/view.php?id=7701}\footnote{\url{https://caml.inria.fr/mantis/view.php?id=7701}}.\end{ocamlindent}%
\medbreak
\label{Module--module-type-S}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[Module-module-type-S]{\ocamlinlinecode{S}}}\label{Module-module-type-S}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Module-module-type-S--type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\
\label{Module-module-type-S--type-u}\ocamlcodefragment{\ocamltag{keyword}{type} u}\\
\label{Module-module-type-S--type-v}\ocamlcodefragment{\ocamltag{keyword}{type} 'a v}\\
\label{Module-module-type-S--type-w}\ocamlcodefragment{\ocamltag{keyword}{type} ('a,\allowbreak{} 'b) w}\\
\label{Module-module-type-S--module-M}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Module-module-type-S-M]{\ocamlinlinecode{M}}}\label{Module-module-type-S-M}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\end{ocamlindent}%
\ocamlcodefragment{\ocamltag{keyword}{end}}\\
\end{ocamlindent}%
\ocamlcodefragment{\ocamltag{keyword}{end}}\\
\label{Module--module-type-S1}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} S1}\\
\label{Module--module-type-S2}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} S2 = \hyperref[Module-module-type-S]{\ocamlinlinecode{S}}}\\
\label{Module--module-type-S3}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[Module-module-type-S3]{\ocamlinlinecode{S3}}}\label{Module-module-type-S3}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Module-module-type-S3--type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = int}\\
\label{Module-module-type-S3--type-u}\ocamlcodefragment{\ocamltag{keyword}{type} u = string}\\
\label{Module-module-type-S3--type-v}\ocamlcodefragment{\ocamltag{keyword}{type} 'a v}\\
\label{Module-module-type-S3--type-w}\ocamlcodefragment{\ocamltag{keyword}{type} ('a,\allowbreak{} 'b) w}\\
\label{Module-module-type-S3--module-M}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Module-module-type-S3-M]{\ocamlinlinecode{M}}}\label{Module-module-type-S3-M}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\end{ocamlindent}%
\ocamlcodefragment{\ocamltag{keyword}{end}}\\
\end{ocamlindent}%
\ocamlcodefragment{\ocamltag{keyword}{end}}\\
\label{Module--module-type-S4}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[Module-module-type-S4]{\ocamlinlinecode{S4}}}\label{Module-module-type-S4}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Module-module-type-S4--type-u}\ocamlcodefragment{\ocamltag{keyword}{type} u}\\
\label{Module-module-type-S4--type-v}\ocamlcodefragment{\ocamltag{keyword}{type} 'a v}\\
\label{Module-module-type-S4--type-w}\ocamlcodefragment{\ocamltag{keyword}{type} ('a,\allowbreak{} 'b) w}\\
\label{Module-module-type-S4--module-M}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Module-module-type-S4-M]{\ocamlinlinecode{M}}}\label{Module-module-type-S4-M}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\end{ocamlindent}%
\ocamlcodefragment{\ocamltag{keyword}{end}}\\
\end{ocamlindent}%
\ocamlcodefragment{\ocamltag{keyword}{end}}\\
\label{Module--module-type-S5}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[Module-module-type-S5]{\ocamlinlinecode{S5}}}\label{Module-module-type-S5}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Module-module-type-S5--type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\
\label{Module-module-type-S5--type-u}\ocamlcodefragment{\ocamltag{keyword}{type} u}\\
\label{Module-module-type-S5--type-w}\ocamlcodefragment{\ocamltag{keyword}{type} ('a,\allowbreak{} 'b) w}\\
\label{Module-module-type-S5--module-M}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Module-module-type-S5-M]{\ocamlinlinecode{M}}}\label{Module-module-type-S5-M}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\end{ocamlindent}%
\ocamlcodefragment{\ocamltag{keyword}{end}}\\
\end{ocamlindent}%
\ocamlcodefragment{\ocamltag{keyword}{end}}\\
\label{Module--type-result}\ocamlcodefragment{\ocamltag{keyword}{type} ('a,\allowbreak{} 'b) result}\\
\label{Module--module-type-S6}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[Module-module-type-S6]{\ocamlinlinecode{S6}}}\label{Module-module-type-S6}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Module-module-type-S6--type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\
\label{Module-module-type-S6--type-u}\ocamlcodefragment{\ocamltag{keyword}{type} u}\\
\label{Module-module-type-S6--type-v}\ocamlcodefragment{\ocamltag{keyword}{type} 'a v}\\
\label{Module-module-type-S6--module-M}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Module-module-type-S6-M]{\ocamlinlinecode{M}}}\label{Module-module-type-S6-M}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\end{ocamlindent}%
\ocamlcodefragment{\ocamltag{keyword}{end}}\\
\end{ocamlindent}%
\ocamlcodefragment{\ocamltag{keyword}{end}}\\
\label{Module--module-M'}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Module-M']{\ocamlinlinecode{M'}}}\label{Module-M'}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\end{ocamlindent}%
\ocamlcodefragment{\ocamltag{keyword}{end}}\\
\label{Module--module-type-S7}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[Module-module-type-S7]{\ocamlinlinecode{S7}}}\label{Module-module-type-S7}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Module-module-type-S7--type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\
\label{Module-module-type-S7--type-u}\ocamlcodefragment{\ocamltag{keyword}{type} u}\\
\label{Module-module-type-S7--type-v}\ocamlcodefragment{\ocamltag{keyword}{type} 'a v}\\
\label{Module-module-type-S7--type-w}\ocamlcodefragment{\ocamltag{keyword}{type} ('a,\allowbreak{} 'b) w}\\
\label{Module-module-type-S7--module-M}\ocamlcodefragment{\ocamltag{keyword}{module} M = \hyperref[Module-M']{\ocamlinlinecode{M'}}}\\
\end{ocamlindent}%
\ocamlcodefragment{\ocamltag{keyword}{end}}\\
\label{Module--module-type-S8}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[Module-module-type-S8]{\ocamlinlinecode{S8}}}\label{Module-module-type-S8}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Module-module-type-S8--type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\
\label{Module-module-type-S8--type-u}\ocamlcodefragment{\ocamltag{keyword}{type} u}\\
\label{Module-module-type-S8--type-v}\ocamlcodefragment{\ocamltag{keyword}{type} 'a v}\\
\label{Module-module-type-S8--type-w}\ocamlcodefragment{\ocamltag{keyword}{type} ('a,\allowbreak{} 'b) w}\\
\end{ocamlindent}%
\ocamlcodefragment{\ocamltag{keyword}{end}}\\
\label{Module--module-type-S9}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[Module-module-type-S9]{\ocamlinlinecode{S9}}}\label{Module-module-type-S9}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\end{ocamlindent}%
\ocamlcodefragment{\ocamltag{keyword}{end}}\\
\label{Module--module-Mutually}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Module-Mutually]{\ocamlinlinecode{Mutually}}}\label{Module-Mutually}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\end{ocamlindent}%
\ocamlcodefragment{\ocamltag{keyword}{end}}\\
\label{Module--module-Recursive}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Module-Recursive]{\ocamlinlinecode{Recursive}}}\label{Module-Recursive}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\end{ocamlindent}%
\ocamlcodefragment{\ocamltag{keyword}{end}}\\


