\chapter{The OCaml language} \label{c:refman} %HEVEA\cutname{language.html} %better html output that way, sniff. %HEVEA\subsection*{ss:foreword}{Foreword} %BEGIN LATEX \section*{s:foreword}{Foreword} %END LATEX This document is intended as a reference manual for the OCaml language. It lists the language constructs, and gives their precise syntax and informal semantics. It is by no means a tutorial introduction to the language. A good working knowledge of OCaml is assumed. No attempt has been made at mathematical rigor: words are employed with their intuitive meaning, without further definition. As a consequence, the typing rules have been left out, by lack of the mathematical framework required to express them, while they are definitely part of a full formal definition of the language. \subsection*{ss:notations}{Notations} The syntax of the language is given in BNF-like notation. Terminal symbols are set in typewriter font (@'like' 'this'@). Non-terminal symbols are set in italic font (@like that@). Square brackets @[\ldots]@ denote optional components. Curly brackets @{\ldots}@ denotes zero, one or several repetitions of the enclosed components. Curly brackets with a trailing plus sign @{{\ldots}}@ denote one or several repetitions of the enclosed components. Parentheses @(\ldots)@ denote grouping. %HEVEA\cutdef{section} \input{lex} \input{values} \input{names} \input{types} \input{const} \input{patterns} \input{expr} \input{typedecl} \input{classes} \input{modtypes} \input{modules} \input{compunit} %HEVEA\cutend