\documentclass[11pt]{article} 
\usepackage[latin1]{inputenc} 
\usepackage[T1]{fontenc} 
\usepackage{textcomp}
\usepackage{fullpage} 
\usepackage{url} 
\usepackage{ocamldoc}
\begin{document}
\tableofcontents
\section{Module {\tt{Functions}}}
\label{Functions}\index{Functions@\verb`Functions`}
\begin{ocamldocdescription}

\end{ocamldocdescription}


\ocamldocvspace{0.5cm}



\label{Functions.f1}\begin{ocamldoccode}
val f1 : int -> y:int -> int
\end{ocamldoccode}
\index{f1@\verb`f1`}




\label{Functions.f2}\begin{ocamldoccode}
val f2 : string -> y:int -> int option -> int
\end{ocamldoccode}
\index{f2@\verb`f2`}
\begin{ocamldocdescription}
There's no way to refer to the third arg in documentation.


\end{ocamldocdescription}




\label{Functions.f3}\begin{ocamldoccode}
val f3 : int -> int -> int -> int
\end{ocamldoccode}
\index{f3@\verb`f3`}
\begin{ocamldocdescription}

\end{ocamldocdescription}




\label{Functions.f4}\begin{ocamldoccode}
val f4 : ?x:int -> ?y:int -> ?z:int -> unit -> int
\end{ocamldoccode}
\index{f4@\verb`f4`}
\begin{ocamldocdescription}
This output is a bit weird: we should probably refer
 to the third argument as {\tt{z}}, its label, rather than
 {\tt{blah}}, its internally-bound pattern.


\end{ocamldocdescription}




\begin{ocamldoccode}
{\tt{class m : }}\end{ocamldoccode}
\label{class:Functions.m}\index{m@\verb`m`}

\begin{ocamldocobjectend}


\label{method:Functions.m.no-underscoreargs}\begin{ocamldoccode}
method no_args : unit
\end{ocamldoccode}
\index{no-underscoreargs@\verb`no_args`}
\begin{ocamldocdescription}

\end{ocamldocdescription}


\label{method:Functions.m.a-underscorefew-underscoreargs}\begin{ocamldoccode}
method a_few_args : int -> int -> int -> int
\end{ocamldoccode}
\index{a-underscorefew-underscoreargs@\verb`a_few_args`}
\begin{ocamldocdescription}

\end{ocamldocdescription}
\end{ocamldocobjectend}




\end{document}
