\new@anchor@label{sec3}{conventions}{{}{X}{??}}
\@deflabeltype{conventions}{none}
\new@anchor@label{sec4}{license}{{}{X}{??}}
\@deflabeltype{license}{none}
\new@anchor@label{sec5}{availability}{{}{X}{??}}
\@deflabeltype{availability}{none}
\@@addtocsec{htoc}{sec6}{-2}{\@print{Part I}\quad{}An introduction to OCaml{}}
\newlabel{p:tutorials}{{I}{X}{An introduction to OCaml}}
\@deflabeltype{p:tutorials}{part}
\@@addtocsec{htoc}{sec7}{-1}{\@print{Chapter 1}\quad{}The core language{}}
\newlabel{c:core-xamples}{{1}{X}{The core language}}
\@deflabeltype{c:core-xamples}{chapter}
\@@addtocsec{htoc}{s:basics}{0}{\@print{1.1}\quad{}\label{s:basics}Basics{}}
\new@anchor@label{sec8}{s:basics}{{1.1}{X}{\label{s:basics}Basics}}
\@deflabeltype{s:basics}{section}
\@@addtocsec{htoc}{s:datatypes}{0}{\@print{1.2}\quad{}\label{s:datatypes}Data types{}}
\new@anchor@label{sec9}{s:datatypes}{{1.2}{X}{\label{s:datatypes}Data types}}
\@deflabeltype{s:datatypes}{section}
\@@addtocsec{htoc}{s:functions-as-values}{0}{\@print{1.3}\quad{}\label{s:functions-as-values}Functions as values{}}
\new@anchor@label{sec10}{s:functions-as-values}{{1.3}{X}{\label{s:functions-as-values}Functions as values}}
\@deflabeltype{s:functions-as-values}{section}
\@@addtocsec{htoc}{s:tut-recvariants}{0}{\@print{1.4}\quad{}\label{s:tut-recvariants}Records and variants{}}
\new@anchor@label{sec11}{s:tut-recvariants}{{1.4}{X}{\label{s:tut-recvariants}Records and variants}}
\@deflabeltype{s:tut-recvariants}{section}
\@@addtocsec{htoc}{ss:record-and-variant-disambiguation}{1}{\@print{1.4.1}\quad{}\label{ss:record-and-variant-disambiguation}Record and variant disambiguation{}}
\new@anchor@label{sec12}{ss:record-and-variant-disambiguation}{{1.4.1}{X}{\label{ss:record-and-variant-disambiguation}Record and variant disambiguation}}
\@deflabeltype{ss:record-and-variant-disambiguation}{subsection}
\@@addtocsec{htoc}{s:imperative-features}{0}{\@print{1.5}\quad{}\label{s:imperative-features}Imperative features{}}
\new@anchor@label{sec13}{s:imperative-features}{{1.5}{X}{\label{s:imperative-features}Imperative features}}
\@deflabeltype{s:imperative-features}{section}
\@@addtocsec{htoc}{s:exceptions}{0}{\@print{1.6}\quad{}\label{s:exceptions}Exceptions{}}
\new@anchor@label{sec14}{s:exceptions}{{1.6}{X}{\label{s:exceptions}Exceptions}}
\@deflabeltype{s:exceptions}{section}
\@@addtocsec{htoc}{s:lazy-expr}{0}{\@print{1.7}\quad{}\label{s:lazy-expr}Lazy expressions{}}
\new@anchor@label{sec15}{s:lazy-expr}{{1.7}{X}{\label{s:lazy-expr}Lazy expressions}}
\@deflabeltype{s:lazy-expr}{section}
\@@addtocsec{htoc}{s:symb-expr}{0}{\@print{1.8}\quad{}\label{s:symb-expr}Symbolic processing of expressions{}}
\new@anchor@label{sec16}{s:symb-expr}{{1.8}{X}{\label{s:symb-expr}Symbolic processing of expressions}}
\@deflabeltype{s:symb-expr}{section}
\@@addtocsec{htoc}{s:pretty-printing}{0}{\@print{1.9}\quad{}\label{s:pretty-printing}Pretty-printing{}}
\new@anchor@label{sec17}{s:pretty-printing}{{1.9}{X}{\label{s:pretty-printing}Pretty-printing}}
\@deflabeltype{s:pretty-printing}{section}
\@@addtocsec{htoc}{s:printf}{0}{\@print{1.10}\quad{}\label{s:printf}Printf formats{}}
\new@anchor@label{sec18}{s:printf}{{1.10}{X}{\label{s:printf}Printf formats}}
\@deflabeltype{s:printf}{section}
\@@addtocsec{htoc}{s:standalone-programs}{0}{\@print{1.11}\quad{}\label{s:standalone-programs}Standalone OCaml programs{}}
\new@anchor@label{sec19}{s:standalone-programs}{{1.11}{X}{\label{s:standalone-programs}Standalone OCaml programs}}
\@deflabeltype{s:standalone-programs}{section}
\@@addtocsec{htoc}{sec20}{-1}{\@print{Chapter 2}\quad{}The module system{}}
\newlabel{c:moduleexamples}{{2}{X}{The module system}}
\@deflabeltype{c:moduleexamples}{chapter}
\@@addtocsec{htoc}{s:module:structures}{0}{\@print{2.1}\quad{}\label{s:module:structures}Structures{}}
\new@anchor@label{sec21}{s:module:structures}{{2.1}{X}{\label{s:module:structures}Structures}}
\@deflabeltype{s:module:structures}{section}
\@@addtocsec{htoc}{s:signature}{0}{\@print{2.2}\quad{}\label{s:signature}Signatures{}}
\new@anchor@label{sec22}{s:signature}{{2.2}{X}{\label{s:signature}Signatures}}
\@deflabeltype{s:signature}{section}
\@@addtocsec{htoc}{s:functors}{0}{\@print{2.3}\quad{}\label{s:functors}Functors{}}
\new@anchor@label{sec23}{s:functors}{{2.3}{X}{\label{s:functors}Functors}}
\@deflabeltype{s:functors}{section}
\@@addtocsec{htoc}{s:functors-and-abstraction}{0}{\@print{2.4}\quad{}\label{s:functors-and-abstraction}Functors and type abstraction{}}
\new@anchor@label{sec24}{s:functors-and-abstraction}{{2.4}{X}{\label{s:functors-and-abstraction}Functors and type abstraction}}
\@deflabeltype{s:functors-and-abstraction}{section}
\@@addtocsec{htoc}{s:separate-compilation}{0}{\@print{2.5}\quad{}\label{s:separate-compilation}Modules and separate compilation{}}
\new@anchor@label{sec25}{s:separate-compilation}{{2.5}{X}{\label{s:separate-compilation}Modules and separate compilation}}
\@deflabeltype{s:separate-compilation}{section}
\@@addtocsec{htoc}{sec26}{-1}{\@print{Chapter 3}\quad{}Objects in OCaml{}}
\newlabel{c:objectexamples}{{3}{X}{Objects in OCaml}}
\@deflabeltype{c:objectexamples}{chapter}
\@@addtocsec{htoc}{s:classes-and-objects}{0}{\@print{3.1}\quad{}\label{s:classes-and-objects}Classes and objects{}}
\new@anchor@label{sec27}{s:classes-and-objects}{{3.1}{X}{\label{s:classes-and-objects}Classes and objects}}
\@deflabeltype{s:classes-and-objects}{section}
\@@addtocsec{htoc}{s:immediate-objects}{0}{\@print{3.2}\quad{}\label{s:immediate-objects}Immediate objects{}}
\new@anchor@label{sec28}{s:immediate-objects}{{3.2}{X}{\label{s:immediate-objects}Immediate objects}}
\@deflabeltype{s:immediate-objects}{section}
\@@addtocsec{htoc}{s:reference-to-self}{0}{\@print{3.3}\quad{}\label{s:reference-to-self}Reference to self{}}
\new@anchor@label{sec29}{s:reference-to-self}{{3.3}{X}{\label{s:reference-to-self}Reference to self}}
\@deflabeltype{s:reference-to-self}{section}
\@@addtocsec{htoc}{s:initializers}{0}{\@print{3.4}\quad{}\label{s:initializers}Initializers{}}
\new@anchor@label{sec30}{s:initializers}{{3.4}{X}{\label{s:initializers}Initializers}}
\@deflabeltype{s:initializers}{section}
\@@addtocsec{htoc}{s:virtual-methods}{0}{\@print{3.5}\quad{}\label{s:virtual-methods}Virtual methods{}}
\new@anchor@label{sec31}{s:virtual-methods}{{3.5}{X}{\label{s:virtual-methods}Virtual methods}}
\@deflabeltype{s:virtual-methods}{section}
\@@addtocsec{htoc}{s:private-methods}{0}{\@print{3.6}\quad{}\label{s:private-methods}Private methods{}}
\new@anchor@label{sec32}{s:private-methods}{{3.6}{X}{\label{s:private-methods}Private methods}}
\@deflabeltype{s:private-methods}{section}
\@@addtocsec{htoc}{s:class-interfaces}{0}{\@print{3.7}\quad{}\label{s:class-interfaces}Class interfaces{}}
\new@anchor@label{sec33}{s:class-interfaces}{{3.7}{X}{\label{s:class-interfaces}Class interfaces}}
\@deflabeltype{s:class-interfaces}{section}
\@@addtocsec{htoc}{s:inheritance}{0}{\@print{3.8}\quad{}\label{s:inheritance}Inheritance{}}
\new@anchor@label{sec34}{s:inheritance}{{3.8}{X}{\label{s:inheritance}Inheritance}}
\@deflabeltype{s:inheritance}{section}
\@@addtocsec{htoc}{s:multiple-inheritance}{0}{\@print{3.9}\quad{}\label{s:multiple-inheritance}Multiple inheritance{}}
\new@anchor@label{sec35}{s:multiple-inheritance}{{3.9}{X}{\label{s:multiple-inheritance}Multiple inheritance}}
\@deflabeltype{s:multiple-inheritance}{section}
\@@addtocsec{htoc}{s:parameterized-classes}{0}{\@print{3.10}\quad{}\label{s:parameterized-classes}Parameterized classes{}}
\new@anchor@label{sec36}{s:parameterized-classes}{{3.10}{X}{\label{s:parameterized-classes}Parameterized classes}}
\@deflabeltype{s:parameterized-classes}{section}
\@@addtocsec{htoc}{s:polymorphic-methods}{0}{\@print{3.11}\quad{}\label{s:polymorphic-methods}Polymorphic methods{}}
\new@anchor@label{sec37}{s:polymorphic-methods}{{3.11}{X}{\label{s:polymorphic-methods}Polymorphic methods}}
\@deflabeltype{s:polymorphic-methods}{section}
\@@addtocsec{htoc}{s:using-coercions}{0}{\@print{3.12}\quad{}\label{s:using-coercions}Using coercions{}}
\new@anchor@label{sec38}{s:using-coercions}{{3.12}{X}{\label{s:using-coercions}Using coercions}}
\@deflabeltype{s:using-coercions}{section}
\@@addtocsec{htoc}{s:functional-objects}{0}{\@print{3.13}\quad{}\label{s:functional-objects}Functional objects{}}
\new@anchor@label{sec39}{s:functional-objects}{{3.13}{X}{\label{s:functional-objects}Functional objects}}
\@deflabeltype{s:functional-objects}{section}
\@@addtocsec{htoc}{s:cloning-objects}{0}{\@print{3.14}\quad{}\label{s:cloning-objects}Cloning objects{}}
\new@anchor@label{sec40}{s:cloning-objects}{{3.14}{X}{\label{s:cloning-objects}Cloning objects}}
\@deflabeltype{s:cloning-objects}{section}
\@@addtocsec{htoc}{s:recursive-classes}{0}{\@print{3.15}\quad{}\label{s:recursive-classes}Recursive classes{}}
\new@anchor@label{sec41}{s:recursive-classes}{{3.15}{X}{\label{s:recursive-classes}Recursive classes}}
\@deflabeltype{s:recursive-classes}{section}
\@@addtocsec{htoc}{s:binary-methods}{0}{\@print{3.16}\quad{}\label{s:binary-methods}Binary methods{}}
\new@anchor@label{sec42}{s:binary-methods}{{3.16}{X}{\label{s:binary-methods}Binary methods}}
\@deflabeltype{s:binary-methods}{section}
\@@addtocsec{htoc}{s:friends}{0}{\@print{3.17}\quad{}\label{s:friends}Friends{}}
\new@anchor@label{sec43}{s:friends}{{3.17}{X}{\label{s:friends}Friends}}
\@deflabeltype{s:friends}{section}
\@@addtocsec{htoc}{sec44}{-1}{\@print{Chapter 4}\quad{}Labeled arguments{}}
\newlabel{c:labl-examples}{{4}{X}{Labeled arguments}}
\@deflabeltype{c:labl-examples}{chapter}
\@@addtocsec{htoc}{s:optional-arguments}{0}{\@print{4.1}\quad{}\label{s:optional-arguments}Optional arguments{}}
\new@anchor@label{sec45}{s:optional-arguments}{{4.1}{X}{\label{s:optional-arguments}Optional arguments}}
\@deflabeltype{s:optional-arguments}{section}
\@@addtocsec{htoc}{s:label-inference}{0}{\@print{4.2}\quad{}\label{s:label-inference}Labels and type inference{}}
\new@anchor@label{sec46}{s:label-inference}{{4.2}{X}{\label{s:label-inference}Labels and type inference}}
\@deflabeltype{s:label-inference}{section}
\@@addtocsec{htoc}{s:label-suggestions}{0}{\@print{4.3}\quad{}\label{s:label-suggestions}Suggestions for labeling{}}
\new@anchor@label{sec47}{s:label-suggestions}{{4.3}{X}{\label{s:label-suggestions}Suggestions for labeling}}
\@deflabeltype{s:label-suggestions}{section}
\@@addtocsec{htoc}{sec48}{-1}{\@print{Chapter 5}\quad{}Polymorphic variants{}}
\newlabel{c:poly-variant}{{5}{X}{Polymorphic variants}}
\@deflabeltype{c:poly-variant}{chapter}
\@@addtocsec{htoc}{s:polyvariant:basic-use}{0}{\@print{5.1}\quad{}\label{s:polyvariant:basic-use}Basic use{}}
\new@anchor@label{sec49}{s:polyvariant:basic-use}{{5.1}{X}{\label{s:polyvariant:basic-use}Basic use}}
\@deflabeltype{s:polyvariant:basic-use}{section}
\@@addtocsec{htoc}{s:polyvariant-advanced}{0}{\@print{5.2}\quad{}\label{s:polyvariant-advanced}Advanced use{}}
\new@anchor@label{sec50}{s:polyvariant-advanced}{{5.2}{X}{\label{s:polyvariant-advanced}Advanced use}}
\@deflabeltype{s:polyvariant-advanced}{section}
\@@addtocsec{htoc}{s:polyvariant-weaknesses}{0}{\@print{5.3}\quad{}\label{s:polyvariant-weaknesses}Weaknesses of polymorphic variants{}}
\new@anchor@label{sec51}{s:polyvariant-weaknesses}{{5.3}{X}{\label{s:polyvariant-weaknesses}Weaknesses of polymorphic variants}}
\@deflabeltype{s:polyvariant-weaknesses}{section}
\@@addtocsec{htoc}{sec52}{-1}{\@print{Chapter 6}\quad{}Polymorphism and its limitations{}}
\newlabel{c:polymorphism}{{6}{X}{Polymorphism and its limitations}}
\@deflabeltype{c:polymorphism}{chapter}
\@@addtocsec{htoc}{s:weak-polymorphism}{0}{\@print{6.1}\quad{}\label{s:weak-polymorphism}Weak polymorphism and mutation{}}
\new@anchor@label{sec53}{s:weak-polymorphism}{{6.1}{X}{\label{s:weak-polymorphism}Weak polymorphism and mutation}}
\@deflabeltype{s:weak-polymorphism}{section}
\@@addtocsec{htoc}{ss:weak-types}{1}{\@print{6.1.1}\quad{}\label{ss:weak-types}Weakly polymorphic types{}}
\new@anchor@label{sec54}{ss:weak-types}{{6.1.1}{X}{\label{ss:weak-types}Weakly polymorphic types}}
\@deflabeltype{ss:weak-types}{subsection}
\@@addtocsec{htoc}{ss:valuerestriction}{1}{\@print{6.1.2}\quad{}\label{ss:valuerestriction}The value restriction{}}
\new@anchor@label{sec55}{ss:valuerestriction}{{6.1.2}{X}{\label{ss:valuerestriction}The value restriction}}
\@deflabeltype{ss:valuerestriction}{subsection}
\@@addtocsec{htoc}{ss:relaxed-value-restriction}{1}{\@print{6.1.3}\quad{}\label{ss:relaxed-value-restriction}The relaxed value restriction{}}
\new@anchor@label{sec56}{ss:relaxed-value-restriction}{{6.1.3}{X}{\label{ss:relaxed-value-restriction}The relaxed value restriction}}
\@deflabeltype{ss:relaxed-value-restriction}{subsection}
\@@addtocsec{htoc}{ss:variance-and-value-restriction}{1}{\@print{6.1.4}\quad{}\label{ss:variance-and-value-restriction}Variance and value restriction{}}
\new@anchor@label{sec57}{ss:variance-and-value-restriction}{{6.1.4}{X}{\label{ss:variance-and-value-restriction}Variance and value restriction}}
\@deflabeltype{ss:variance-and-value-restriction}{subsection}
\@@addtocsec{htoc}{ss:variance:abstract-data-types}{1}{\@print{6.1.5}\quad{}\label{ss:variance:abstract-data-types}Abstract data types{}}
\new@anchor@label{sec58}{ss:variance:abstract-data-types}{{6.1.5}{X}{\label{ss:variance:abstract-data-types}Abstract data types}}
\@deflabeltype{ss:variance:abstract-data-types}{subsection}
\@@addtocsec{htoc}{s:polymorphic-recursion}{0}{\@print{6.2}\quad{}\label{s:polymorphic-recursion}Polymorphic recursion{}}
\new@anchor@label{sec59}{s:polymorphic-recursion}{{6.2}{X}{\label{s:polymorphic-recursion}Polymorphic recursion}}
\@deflabeltype{s:polymorphic-recursion}{section}
\@@addtocsec{htoc}{ss:explicit-polymorphism}{1}{\@print{6.2.1}\quad{}\label{ss:explicit-polymorphism}Explicitly polymorphic annotations{}}
\new@anchor@label{sec60}{ss:explicit-polymorphism}{{6.2.1}{X}{\label{ss:explicit-polymorphism}Explicitly polymorphic annotations}}
\@deflabeltype{ss:explicit-polymorphism}{subsection}
\@@addtocsec{htoc}{ss:recursive-poly-examples}{1}{\@print{6.2.2}\quad{}\label{ss:recursive-poly-examples}More examples{}}
\new@anchor@label{sec61}{ss:recursive-poly-examples}{{6.2.2}{X}{\label{ss:recursive-poly-examples}More examples}}
\@deflabeltype{ss:recursive-poly-examples}{subsection}
\@@addtocsec{htoc}{s:higher-rank-poly}{0}{\@print{6.3}\quad{}\label{s:higher-rank-poly}Higher-rank polymorphic functions{}}
\new@anchor@label{sec62}{s:higher-rank-poly}{{6.3}{X}{\label{s:higher-rank-poly}Higher-rank polymorphic functions}}
\@deflabeltype{s:higher-rank-poly}{section}
\@@addtocsec{htoc}{sec63}{-1}{\@print{Chapter 7}\quad{}Generalized algebraic datatypes{}}
\newlabel{c:gadts-tutorial}{{7}{X}{Generalized algebraic datatypes}}
\@deflabeltype{c:gadts-tutorial}{chapter}
\@@addtocsec{htoc}{s:gadts-recfun}{0}{\@print{7.1}\quad{}\label{s:gadts-recfun}Recursive functions{}}
\new@anchor@label{sec64}{s:gadts-recfun}{{7.1}{X}{\label{s:gadts-recfun}Recursive functions}}
\@deflabeltype{s:gadts-recfun}{section}
\@@addtocsec{htoc}{s:gadts-type-inference}{0}{\@print{7.2}\quad{}\label{s:gadts-type-inference}Type inference{}}
\new@anchor@label{sec65}{s:gadts-type-inference}{{7.2}{X}{\label{s:gadts-type-inference}Type inference}}
\@deflabeltype{s:gadts-type-inference}{section}
\@@addtocsec{htoc}{s:gadt-refutation-cases}{0}{\@print{7.3}\quad{}\label{s:gadt-refutation-cases}Refutation cases{}}
\new@anchor@label{sec66}{s:gadt-refutation-cases}{{7.3}{X}{\label{s:gadt-refutation-cases}Refutation cases}}
\@deflabeltype{s:gadt-refutation-cases}{section}
\@@addtocsec{htoc}{s:gadts-advexamples}{0}{\@print{7.4}\quad{}\label{s:gadts-advexamples}Advanced examples{}}
\new@anchor@label{sec67}{s:gadts-advexamples}{{7.4}{X}{\label{s:gadts-advexamples}Advanced examples}}
\@deflabeltype{s:gadts-advexamples}{section}
\@@addtocsec{htoc}{s:existential-names}{0}{\@print{7.5}\quad{}\label{s:existential-names}Existential type names in error messages{}}
\new@anchor@label{sec68}{s:existential-names}{{7.5}{X}{\label{s:existential-names}Existential type names in error messages}}
\@deflabeltype{s:existential-names}{section}
\@@addtocsec{htoc}{s:explicit-existential-name}{0}{\@print{7.6}\quad{}\label{s:explicit-existential-name}Explicit naming of existentials{}}
\new@anchor@label{sec69}{s:explicit-existential-name}{{7.6}{X}{\label{s:explicit-existential-name}Explicit naming of existentials}}
\@deflabeltype{s:explicit-existential-name}{section}
\@@addtocsec{htoc}{s:gadt-equation-nonlocal-abstract}{0}{\@print{7.7}\quad{}\label{s:gadt-equation-nonlocal-abstract}Equations on non-local abstract types{}}
\new@anchor@label{sec70}{s:gadt-equation-nonlocal-abstract}{{7.7}{X}{\label{s:gadt-equation-nonlocal-abstract}Equations on non-local abstract types}}
\@deflabeltype{s:gadt-equation-nonlocal-abstract}{section}
\@@addtocsec{htoc}{s:types-used-as-gadt-indices}{0}{\@print{7.8}\quad{}\label{s:types-used-as-gadt-indices}Types used as GADT indices{}}
\new@anchor@label{sec71}{s:types-used-as-gadt-indices}{{7.8}{X}{\label{s:types-used-as-gadt-indices}Types used as GADT indices}}
\@deflabeltype{s:types-used-as-gadt-indices}{section}
\@@addtocsec{htoc}{s:abstract-types-current-module}{1}{\@print{7.8.1}\quad{}\label{s:abstract-types-current-module}Legacy behavior: types in the current module{}}
\new@anchor@label{sec72}{s:abstract-types-current-module}{{7.8.1}{X}{\label{s:abstract-types-current-module}Legacy behavior: types in the current module}}
\@deflabeltype{s:abstract-types-current-module}{subsection}
\@@addtocsec{htoc}{sec73}{-1}{\@print{Chapter 8}\quad{}Advanced examples with classes and modules{}}
\newlabel{c:advexamples}{{8}{X}{Advanced examples with classes and modules}}
\@deflabeltype{c:advexamples}{chapter}
\@@addtocsec{htoc}{s:extended-bank-accounts}{0}{\@print{8.1}\quad{}\label{s:extended-bank-accounts}Extended example: bank accounts{}}
\new@anchor@label{sec74}{s:extended-bank-accounts}{{8.1}{X}{\label{s:extended-bank-accounts}Extended example: bank accounts}}
\@deflabeltype{s:extended-bank-accounts}{section}
\@@addtocsec{htoc}{s:modules-as-classes}{0}{\@print{8.2}\quad{}\label{s:modules-as-classes}Simple modules as classes{}}
\new@anchor@label{sec75}{s:modules-as-classes}{{8.2}{X}{\label{s:modules-as-classes}Simple modules as classes}}
\@deflabeltype{s:modules-as-classes}{section}
\@@addtocsec{htoc}{ss:string-as-class}{1}{\@print{8.2.1}\quad{}\label{ss:string-as-class}Strings{}}
\new@anchor@label{sec76}{ss:string-as-class}{{8.2.1}{X}{\label{ss:string-as-class}Strings}}
\@deflabeltype{ss:string-as-class}{subsection}
\new@anchor@label{sec77}{sss:stack-as-class}{{8.2.1}{X}{\label{sss:stack-as-class}Stacks}}
\@deflabeltype{sss:stack-as-class}{subsection}
\@@addtocsec{htoc}{ss:hashtbl-as-class}{1}{\@print{8.2.2}\quad{}\label{ss:hashtbl-as-class}Hashtbl{}}
\new@anchor@label{sec78}{ss:hashtbl-as-class}{{8.2.2}{X}{\label{ss:hashtbl-as-class}Hashtbl}}
\@deflabeltype{ss:hashtbl-as-class}{subsection}
\@@addtocsec{htoc}{ss:set-as-class}{1}{\@print{8.2.3}\quad{}\label{ss:set-as-class}Sets{}}
\new@anchor@label{sec79}{ss:set-as-class}{{8.2.3}{X}{\label{ss:set-as-class}Sets}}
\@deflabeltype{ss:set-as-class}{subsection}
\@@addtocsec{htoc}{s:subject-observer}{0}{\@print{8.3}\quad{}\label{s:subject-observer}The subject/observer pattern{}}
\new@anchor@label{sec80}{s:subject-observer}{{8.3}{X}{\label{s:subject-observer}The subject/observer pattern}}
\@deflabeltype{s:subject-observer}{section}
\@@addtocsec{htoc}{sec81}{-1}{\@print{Chapter 9}\quad{}Parallel programming{}}
\newlabel{c:parallelism}{{9}{X}{Parallel programming}}
\@deflabeltype{c:parallelism}{chapter}
\@@addtocsec{htoc}{s:par_domains}{0}{\@print{9.1}\quad{}\label{s:par_domains}Domains{}}
\new@anchor@label{sec82}{s:par_domains}{{9.1}{X}{\label{s:par_domains}Domains}}
\@deflabeltype{s:par_domains}{section}
\@@addtocsec{htoc}{s:par_join}{1}{\@print{9.1.1}\quad{}\label{s:par_join}Joining domains{}}
\new@anchor@label{sec83}{s:par_join}{{9.1.1}{X}{\label{s:par_join}Joining domains}}
\@deflabeltype{s:par_join}{subsection}
\@@addtocsec{htoc}{s:par_parfib}{0}{\@print{9.2}\quad{}\label{s:par_parfib}Domainslib: A library for nested-parallel programming{}}
\new@anchor@label{sec84}{s:par_parfib}{{9.2}{X}{\label{s:par_parfib}Domainslib: A library for nested-parallel programming}}
\@deflabeltype{s:par_parfib}{section}
\@@addtocsec{htoc}{s:par_parfib_domainslib}{1}{\@print{9.2.1}\quad{}\label{s:par_parfib_domainslib}Parallelising Fibonacci using domainslib{}}
\new@anchor@label{sec85}{s:par_parfib_domainslib}{{9.2.1}{X}{\label{s:par_parfib_domainslib}Parallelising Fibonacci using domainslib}}
\@deflabeltype{s:par_parfib_domainslib}{subsection}
\@@addtocsec{htoc}{s:par_iterators}{1}{\@print{9.2.2}\quad{}\label{s:par_iterators}Parallel iteration constructs{}}
\new@anchor@label{sec86}{s:par_iterators}{{9.2.2}{X}{\label{s:par_iterators}Parallel iteration constructs}}
\@deflabeltype{s:par_iterators}{subsection}
\@@addtocsec{htoc}{s:par_gc}{0}{\@print{9.3}\quad{}\label{s:par_gc}Parallel garbage collection{}}
\new@anchor@label{sec87}{s:par_gc}{{9.3}{X}{\label{s:par_gc}Parallel garbage collection}}
\@deflabeltype{s:par_gc}{section}
\@@addtocsec{htoc}{s:par_mm_easy}{0}{\@print{9.4}\quad{}\label{s:par_mm_easy}Memory model: The easy bits{}}
\new@anchor@label{sec88}{s:par_mm_easy}{{9.4}{X}{\label{s:par_mm_easy}Memory model: The easy bits}}
\@deflabeltype{s:par_mm_easy}{section}
\@@addtocsec{htoc}{s:par_sync}{0}{\@print{9.5}\quad{}\label{s:par_sync}Blocking synchronisation{}}
\new@anchor@label{sec89}{s:par_sync}{{9.5}{X}{\label{s:par_sync}Blocking synchronisation}}
\@deflabeltype{s:par_sync}{section}
\@@addtocsec{htoc}{s:par_systhread_interaction}{1}{\@print{9.5.1}\quad{}\label{s:par_systhread_interaction}Interaction with systhreads{}}
\new@anchor@label{sec90}{s:par_systhread_interaction}{{9.5.1}{X}{\label{s:par_systhread_interaction}Interaction with systhreads}}
\@deflabeltype{s:par_systhread_interaction}{subsection}
\@@addtocsec{htoc}{s:par_c_bindings}{0}{\@print{9.6}\quad{}\label{s:par_c_bindings}Interaction with C bindings{}}
\new@anchor@label{sec91}{s:par_c_bindings}{{9.6}{X}{\label{s:par_c_bindings}Interaction with C bindings}}
\@deflabeltype{s:par_c_bindings}{section}
\@@addtocsec{htoc}{s:par_atomics}{0}{\@print{9.7}\quad{}\label{s:par_atomics}Atomics{}}
\new@anchor@label{sec92}{s:par_atomics}{{9.7}{X}{\label{s:par_atomics}Atomics}}
\@deflabeltype{s:par_atomics}{section}
\@@addtocsec{htoc}{s:par_lockfree_stack}{1}{\@print{9.7.1}\quad{}\label{s:par_lockfree_stack}Lock-free stack{}}
\new@anchor@label{sec93}{s:par_lockfree_stack}{{9.7.1}{X}{\label{s:par_lockfree_stack}Lock-free stack}}
\@deflabeltype{s:par_lockfree_stack}{subsection}
\@@addtocsec{htoc}{s:atomic-record-fields}{1}{\@print{9.7.2}\quad{}\label{s:atomic-record-fields}Atomic record fields{}}
\new@anchor@label{sec94}{s:atomic-record-fields}{{9.7.2}{X}{\label{s:atomic-record-fields}Atomic record fields}}
\@deflabeltype{s:atomic-record-fields}{subsection}
\@@addtocsec{htoc}{sec97}{-1}{\@print{Chapter 10}\quad{}Memory model: The hard bits{}}
\newlabel{c:memorymodel}{{10}{X}{Memory model: The hard bits}}
\@deflabeltype{c:memorymodel}{chapter}
\@@addtocsec{htoc}{s:why_relaxed_memory}{0}{\@print{10.1}\quad{}\label{s:why_relaxed_memory}Why weakly consistent memory?{}}
\new@anchor@label{sec98}{s:why_relaxed_memory}{{10.1}{X}{\label{s:why_relaxed_memory}Why weakly consistent memory?}}
\@deflabeltype{s:why_relaxed_memory}{section}
\@@addtocsec{htoc}{ss:mm_comp_opt}{1}{\@print{10.1.1}\quad{}\label{ss:mm_comp_opt}Compiler optimisations{}}
\new@anchor@label{sec99}{ss:mm_comp_opt}{{10.1.1}{X}{\label{ss:mm_comp_opt}Compiler optimisations}}
\@deflabeltype{ss:mm_comp_opt}{subsection}
\@@addtocsec{htoc}{ss:mm_hw_opt}{1}{\@print{10.1.2}\quad{}\label{ss:mm_hw_opt}Hardware optimisations{}}
\new@anchor@label{sec100}{ss:mm_hw_opt}{{10.1.2}{X}{\label{ss:mm_hw_opt}Hardware optimisations}}
\@deflabeltype{ss:mm_hw_opt}{subsection}
\@@addtocsec{htoc}{s:drf_sc}{0}{\@print{10.2}\quad{}\label{s:drf_sc}Data race freedom implies sequential consistency{}}
\new@anchor@label{sec101}{s:drf_sc}{{10.2}{X}{\label{s:drf_sc}Data race freedom implies sequential consistency}}
\@deflabeltype{s:drf_sc}{section}
\@@addtocsec{htoc}{s:atomics}{1}{\@print{10.2.1}\quad{}\label{s:atomics}Memory locations{}}
\new@anchor@label{sec102}{s:atomics}{{10.2.1}{X}{\label{s:atomics}Memory locations}}
\@deflabeltype{s:atomics}{subsection}
\@@addtocsec{htoc}{s:happens_before}{1}{\@print{10.2.2}\quad{}\label{s:happens_before}Happens-before relation{}}
\new@anchor@label{sec103}{s:happens_before}{{10.2.2}{X}{\label{s:happens_before}Happens-before relation}}
\@deflabeltype{s:happens_before}{subsection}
\@@addtocsec{htoc}{s:datarace}{1}{\@print{10.2.3}\quad{}\label{s:datarace}Data race{}}
\new@anchor@label{sec104}{s:datarace}{{10.2.3}{X}{\label{s:datarace}Data race}}
\@deflabeltype{s:datarace}{subsection}
\@@addtocsec{htoc}{ss:drf_sc}{1}{\@print{10.2.4}\quad{}\label{ss:drf_sc}DRF-SC{}}
\new@anchor@label{sec105}{ss:drf_sc}{{10.2.4}{X}{\label{ss:drf_sc}DRF-SC}}
\@deflabeltype{ss:drf_sc}{subsection}
\@@addtocsec{htoc}{s:drf_reasoning}{0}{\@print{10.3}\quad{}\label{s:drf_reasoning}Reasoning with DRF-SC{}}
\new@anchor@label{sec106}{s:drf_reasoning}{{10.3}{X}{\label{s:drf_reasoning}Reasoning with DRF-SC}}
\@deflabeltype{s:drf_reasoning}{section}
\new@anchor@label{sec107}{s:mm_msg_passing}{{10.3}{X}{\label{s:mm_msg_passing}Message-passing}}
\@deflabeltype{s:mm_msg_passing}{section}
\@@addtocsec{htoc}{s:local_drf}{0}{\@print{10.4}\quad{}\label{s:local_drf}Local data race freedom{}}
\new@anchor@label{sec108}{s:local_drf}{{10.4}{X}{\label{s:local_drf}Local data race freedom}}
\@deflabeltype{s:local_drf}{section}
\@@addtocsec{htoc}{s:mm_semantics}{0}{\@print{10.5}\quad{}\label{s:mm_semantics}An operational view of the memory model{}}
\new@anchor@label{sec109}{s:mm_semantics}{{10.5}{X}{\label{s:mm_semantics}An operational view of the memory model}}
\@deflabeltype{s:mm_semantics}{section}
\@@addtocsec{htoc}{ss:mm_non_atomic}{1}{\@print{10.5.1}\quad{}\label{ss:mm_non_atomic}Non-atomic locations{}}
\new@anchor@label{sec110}{ss:mm_non_atomic}{{10.5.1}{X}{\label{ss:mm_non_atomic}Non-atomic locations}}
\@deflabeltype{ss:mm_non_atomic}{subsection}
\@@addtocsec{htoc}{ss:mm_domains}{1}{\@print{10.5.2}\quad{}\label{ss:mm_domains}Domains{}}
\new@anchor@label{sec111}{ss:mm_domains}{{10.5.2}{X}{\label{ss:mm_domains}Domains}}
\@deflabeltype{ss:mm_domains}{subsection}
\@@addtocsec{htoc}{ss:mm_na_access}{1}{\@print{10.5.3}\quad{}\label{ss:mm_na_access}Non-atomic accesses{}}
\new@anchor@label{sec112}{ss:mm_na_access}{{10.5.3}{X}{\label{ss:mm_na_access}Non-atomic accesses}}
\@deflabeltype{ss:mm_na_access}{subsection}
\@@addtocsec{htoc}{ss:mm_at_access}{1}{\@print{10.5.4}\quad{}\label{ss:mm_at_access}Atomic accesses{}}
\new@anchor@label{sec113}{ss:mm_at_access}{{10.5.4}{X}{\label{ss:mm_at_access}Atomic accesses}}
\@deflabeltype{ss:mm_at_access}{subsection}
\@@addtocsec{htoc}{s:mm_semantics_reasoning}{1}{\@print{10.5.5}\quad{}\label{s:mm_semantics_reasoning}Reasoning with the semantics{}}
\new@anchor@label{sec114}{s:mm_semantics_reasoning}{{10.5.5}{X}{\label{s:mm_semantics_reasoning}Reasoning with the semantics}}
\@deflabeltype{s:mm_semantics_reasoning}{subsection}
\@@addtocsec{htoc}{s:mm_tearing}{0}{\@print{10.6}\quad{}\label{s:mm_tearing}Non-compliant operations{}}
\new@anchor@label{sec115}{s:mm_tearing}{{10.6}{X}{\label{s:mm_tearing}Non-compliant operations}}
\@deflabeltype{s:mm_tearing}{section}
\@@addtocsec{htoc}{sec116}{-2}{\@print{Part II}\quad{}The OCaml language{}}
\newlabel{p:refman}{{II}{X}{The OCaml language}}
\@deflabeltype{p:refman}{part}
\@@addtocsec{htoc}{sec117}{-1}{\@print{Chapter 11}\quad{}The OCaml language{}}
\newlabel{c:refman}{{11}{X}{The OCaml language}}
\@deflabeltype{c:refman}{chapter}
\new@anchor@label{sec118}{ss:foreword}{{11}{X}{The OCaml language}}
\@deflabeltype{ss:foreword}{chapter}
\new@anchor@label{sec119}{ss:notations}{{11}{X}{The OCaml language}}
\@deflabeltype{ss:notations}{chapter}
\@@addtocsec{htoc}{s:lexical-conventions}{0}{\@print{11.1}\quad{}\label{s:lexical-conventions}Lexical conventions{}}
\new@anchor@label{sec120}{s:lexical-conventions}{{11.1}{X}{\label{s:lexical-conventions}Lexical conventions}}
\@deflabeltype{s:lexical-conventions}{section}
\new@anchor@label{sec121}{sss:lex:text-encoding}{{11.1}{X}{\label{s:lexical-conventions}Lexical conventions}}
\@deflabeltype{sss:lex:text-encoding}{section}
\new@anchor@label{sec122}{sss:lex:blanks}{{11.1}{X}{\label{s:lexical-conventions}Lexical conventions}}
\@deflabeltype{sss:lex:blanks}{section}
\new@anchor@label{sec123}{sss:lex:comments}{{11.1}{X}{\label{s:lexical-conventions}Lexical conventions}}
\@deflabeltype{sss:lex:comments}{section}
\new@anchor@label{sec124}{sss:lex:identifiers}{{11.1}{X}{\label{s:lexical-conventions}Lexical conventions}}
\@deflabeltype{sss:lex:identifiers}{section}
\stx@exists{ident}\stx@exists{capitalized-ident}\stx@exists{lowercase-ident}\stx@exists{letter}\stx@exists{lowercase-letter}\stx@exists{uppercase-letter}\new@anchor@label{sec125}{sss:integer-literals}{{11.1}{X}{\label{s:lexical-conventions}Lexical conventions}}
\@deflabeltype{sss:integer-literals}{section}
\stx@exists{integer-literal}\stx@exists{int32-literal}\stx@exists{int64-literal}\stx@exists{nativeint-literal}\new@anchor@label{sec126}{sss:floating-point-literals}{{11.1}{X}{\label{s:lexical-conventions}Lexical conventions}}
\@deflabeltype{sss:floating-point-literals}{section}
\stx@exists{float-literal}\new@anchor@label{sec127}{sss:character-literals}{{11.1}{X}{\label{s:lexical-conventions}Lexical conventions}}
\@deflabeltype{sss:character-literals}{section}
\newlabel{s:characterliteral}{{11.1}{X}{\label{s:lexical-conventions}Lexical conventions}}
\@deflabeltype{s:characterliteral}{section}
\stx@exists{char-literal}\stx@exists{escape-sequence}\new@anchor@label{sec128}{sss:stringliterals}{{11.1}{X}{\label{s:lexical-conventions}Lexical conventions}}
\@deflabeltype{sss:stringliterals}{section}
\stx@exists{string-literal}\stx@exists{quoted-string-id}\stx@exists{string-character}\new@anchor@label{sec129}{sss:labelname}{{11.1}{X}{\label{s:lexical-conventions}Lexical conventions}}
\@deflabeltype{sss:labelname}{section}
\stx@exists{label-name}\stx@exists{label}\stx@exists{optlabel}\new@anchor@label{sec130}{sss:lex-ops-symbols}{{11.1}{X}{\label{s:lexical-conventions}Lexical conventions}}
\@deflabeltype{sss:lex-ops-symbols}{section}
\stx@exists{infix-symbol}\stx@exists{prefix-symbol}\stx@exists{operator-char}\stx@exists{core-operator-char}\new@anchor@label{sec131}{sss:keywords}{{11.1}{X}{\label{s:lexical-conventions}Lexical conventions}}
\@deflabeltype{sss:keywords}{section}
\new@anchor@label{sec132}{sss:lex-ambiguities}{{11.1}{X}{\label{s:lexical-conventions}Lexical conventions}}
\@deflabeltype{sss:lex-ambiguities}{section}
\new@anchor@label{sec133}{sss:lex-linedir}{{11.1}{X}{\label{s:lexical-conventions}Lexical conventions}}
\@deflabeltype{sss:lex-linedir}{section}
\stx@exists{linenum-directive}\@@addtocsec{htoc}{s:values}{0}{\@print{11.2}\quad{}\label{s:values}Values{}}
\new@anchor@label{sec134}{s:values}{{11.2}{X}{\label{s:values}Values}}
\@deflabeltype{s:values}{section}
\@@addtocsec{htoc}{ss:values:base}{1}{\@print{11.2.1}\quad{}\label{ss:values:base}Base values{}}
\new@anchor@label{sec135}{ss:values:base}{{11.2.1}{X}{\label{ss:values:base}Base values}}
\@deflabeltype{ss:values:base}{subsection}
\new@anchor@label{sec136}{sss:values:integer}{{11.2.1}{X}{\label{ss:values:base}Base values}}
\@deflabeltype{sss:values:integer}{subsection}
\new@anchor@label{sec137}{sss:values:float}{{11.2.1}{X}{\label{ss:values:base}Base values}}
\@deflabeltype{sss:values:float}{subsection}
\new@anchor@label{sec138}{sss:values:char}{{11.2.1}{X}{\label{ss:values:base}Base values}}
\@deflabeltype{sss:values:char}{subsection}
\new@anchor@label{sec139}{sss:values:string}{{11.2.1}{X}{\label{ss:values:base}Base values}}
\@deflabeltype{sss:values:string}{subsection}
\@@addtocsec{htoc}{ss:values:tuple}{1}{\@print{11.2.2}\quad{}\label{ss:values:tuple}Tuples{}}
\new@anchor@label{sec140}{ss:values:tuple}{{11.2.2}{X}{\label{ss:values:tuple}Tuples}}
\@deflabeltype{ss:values:tuple}{subsection}
\@@addtocsec{htoc}{ss:values:records}{1}{\@print{11.2.3}\quad{}\label{ss:values:records}Records{}}
\new@anchor@label{sec141}{ss:values:records}{{11.2.3}{X}{\label{ss:values:records}Records}}
\@deflabeltype{ss:values:records}{subsection}
\@@addtocsec{htoc}{ss:values:array}{1}{\@print{11.2.4}\quad{}\label{ss:values:array}Arrays{}}
\new@anchor@label{sec142}{ss:values:array}{{11.2.4}{X}{\label{ss:values:array}Arrays}}
\@deflabeltype{ss:values:array}{subsection}
\@@addtocsec{htoc}{ss:values:variant}{1}{\@print{11.2.5}\quad{}\label{ss:values:variant}Variant values{}}
\new@anchor@label{sec143}{ss:values:variant}{{11.2.5}{X}{\label{ss:values:variant}Variant values}}
\@deflabeltype{ss:values:variant}{subsection}
\@@addtocsec{htoc}{ss:values:polyvars}{1}{\@print{11.2.6}\quad{}\label{ss:values:polyvars}Polymorphic variants{}}
\new@anchor@label{sec144}{ss:values:polyvars}{{11.2.6}{X}{\label{ss:values:polyvars}Polymorphic variants}}
\@deflabeltype{ss:values:polyvars}{subsection}
\@@addtocsec{htoc}{ss:values:fun}{1}{\@print{11.2.7}\quad{}\label{ss:values:fun}Functions{}}
\new@anchor@label{sec145}{ss:values:fun}{{11.2.7}{X}{\label{ss:values:fun}Functions}}
\@deflabeltype{ss:values:fun}{subsection}
\@@addtocsec{htoc}{ss:values:obj}{1}{\@print{11.2.8}\quad{}\label{ss:values:obj}Objects{}}
\new@anchor@label{sec146}{ss:values:obj}{{11.2.8}{X}{\label{ss:values:obj}Objects}}
\@deflabeltype{ss:values:obj}{subsection}
\@@addtocsec{htoc}{s:names}{0}{\@print{11.3}\quad{}\label{s:names}Names{}}
\new@anchor@label{sec147}{s:names}{{11.3}{X}{\label{s:names}Names}}
\@deflabeltype{s:names}{section}
\new@anchor@label{sec148}{sss:naming-objects}{{11.3}{X}{\label{s:names}Names}}
\@deflabeltype{sss:naming-objects}{section}
\stx@exists{value-name}\stx@exists{operator-name}\stx@exists{infix-op}\stx@exists{constr-name}\stx@exists{tag-name}\stx@exists{typeconstr-name}\stx@exists{field-name}\stx@exists{module-name}\stx@exists{modtype-name}\stx@exists{class-name}\stx@exists{inst-var-name}\stx@exists{method-name}\new@anchor@label{sec149}{sss:refer-named}{{11.3}{X}{\label{s:names}Names}}
\@deflabeltype{sss:refer-named}{section}
\stx@exists{value-path}\stx@exists{constr}\stx@exists{typeconstr}\stx@exists{field}\stx@exists{modtype-path}\stx@exists{class-path}\stx@exists{classtype-path}\stx@exists{module-path}\stx@exists{extended-module-path}\stx@exists{extended-module-name}\@@addtocsec{htoc}{s:typexpr}{0}{\@print{11.4}\quad{}\label{s:typexpr}Type expressions{}}
\new@anchor@label{sec150}{s:typexpr}{{11.4}{X}{\label{s:typexpr}Type expressions}}
\@deflabeltype{s:typexpr}{section}
\stx@exists{typexpr}\stx@exists{poly-typexpr}\stx@exists{method-type}\new@anchor@label{sec151}{sss:typexpr-variables}{{11.4}{X}{\label{s:typexpr}Type expressions}}
\@deflabeltype{sss:typexpr-variables}{section}
\new@anchor@label{sec152}{sss:typexr:parenthesized}{{11.4}{X}{\label{s:typexpr}Type expressions}}
\@deflabeltype{sss:typexr:parenthesized}{section}
\new@anchor@label{sec153}{sss:typexr-fun}{{11.4}{X}{\label{s:typexpr}Type expressions}}
\@deflabeltype{sss:typexr-fun}{section}
\new@anchor@label{sec154}{sss:typexpr-tuple}{{11.4}{X}{\label{s:typexpr}Type expressions}}
\@deflabeltype{sss:typexpr-tuple}{section}
\new@anchor@label{sec155}{sss:typexpr-constructed}{{11.4}{X}{\label{s:typexpr}Type expressions}}
\@deflabeltype{sss:typexpr-constructed}{section}
\new@anchor@label{sec156}{sss:typexpr-aliased-recursive}{{11.4}{X}{\label{s:typexpr}Type expressions}}
\@deflabeltype{sss:typexpr-aliased-recursive}{section}
\new@anchor@label{sec157}{sss:typexpr-polyvar}{{11.4}{X}{\label{s:typexpr}Type expressions}}
\@deflabeltype{sss:typexpr-polyvar}{section}
\stx@exists{polymorphic-variant-type}\stx@exists{tag-spec-first}\stx@exists{tag-spec}\stx@exists{tag-spec-full}\new@anchor@label{sec158}{sss:typexpr-obj}{{11.4}{X}{\label{s:typexpr}Type expressions}}
\@deflabeltype{sss:typexpr-obj}{section}
\new@anchor@label{sec159}{sss:typexpr-sharp-types}{{11.4}{X}{\label{s:typexpr}Type expressions}}
\@deflabeltype{sss:typexpr-sharp-types}{section}
\new@anchor@label{sec160}{sss:typexpr-variant-record}{{11.4}{X}{\label{s:typexpr}Type expressions}}
\@deflabeltype{sss:typexpr-variant-record}{section}
\@@addtocsec{htoc}{s:const}{0}{\@print{11.5}\quad{}\label{s:const}Constants{}}
\new@anchor@label{sec161}{s:const}{{11.5}{X}{\label{s:const}Constants}}
\@deflabeltype{s:const}{section}
\stx@exists{constant}\@@addtocsec{htoc}{s:patterns}{0}{\@print{11.6}\quad{}\label{s:patterns}Patterns{}}
\new@anchor@label{sec162}{s:patterns}{{11.6}{X}{\label{s:patterns}Patterns}}
\@deflabeltype{s:patterns}{section}
\stx@exists{pattern}\new@anchor@label{sec163}{sss:pat-variable}{{11.6}{X}{\label{s:patterns}Patterns}}
\@deflabeltype{sss:pat-variable}{section}
\new@anchor@label{sec164}{sss:pat-const}{{11.6}{X}{\label{s:patterns}Patterns}}
\@deflabeltype{sss:pat-const}{section}
\new@anchor@label{sec165}{sss:pat-alias}{{11.6}{X}{\label{s:patterns}Patterns}}
\@deflabeltype{sss:pat-alias}{section}
\new@anchor@label{sec166}{sss:pat-parenthesized}{{11.6}{X}{\label{s:patterns}Patterns}}
\@deflabeltype{sss:pat-parenthesized}{section}
\new@anchor@label{sec167}{sss:pat-or}{{11.6}{X}{\label{s:patterns}Patterns}}
\@deflabeltype{sss:pat-or}{section}
\new@anchor@label{sec168}{sss:pat-variant}{{11.6}{X}{\label{s:patterns}Patterns}}
\@deflabeltype{sss:pat-variant}{section}
\new@anchor@label{sec169}{sss:pat-polyvar}{{11.6}{X}{\label{s:patterns}Patterns}}
\@deflabeltype{sss:pat-polyvar}{section}
\new@anchor@label{sec170}{sss:pat-polyvar-abbrev}{{11.6}{X}{\label{s:patterns}Patterns}}
\@deflabeltype{sss:pat-polyvar-abbrev}{section}
\new@anchor@label{sec171}{sss:pat-tuple}{{11.6}{X}{\label{s:patterns}Patterns}}
\@deflabeltype{sss:pat-tuple}{section}
\new@anchor@label{sec172}{sss:pat-record}{{11.6}{X}{\label{s:patterns}Patterns}}
\@deflabeltype{sss:pat-record}{section}
\new@anchor@label{sec173}{sss:pat-array}{{11.6}{X}{\label{s:patterns}Patterns}}
\@deflabeltype{sss:pat-array}{section}
\new@anchor@label{sec174}{sss:pat-range}{{11.6}{X}{\label{s:patterns}Patterns}}
\@deflabeltype{sss:pat-range}{section}
\new@anchor@label{sec175}{sss:pat-lazy}{{11.6}{X}{\label{sss:pat-lazy}Lazy patterns}}
\@deflabeltype{sss:pat-lazy}{section}
\new@anchor@label{sec176}{sss:exception-match}{{11.6}{X}{\label{sss:pat-lazy}Lazy patterns}}
\@deflabeltype{sss:exception-match}{section}
\new@anchor@label{sec177}{sss:pat-open}{{11.6}{X}{\label{sss:pat-lazy}Lazy patterns}}
\@deflabeltype{sss:pat-open}{section}
\@@addtocsec{htoc}{s:value-expr}{0}{\@print{11.7}\quad{}\label{s:value-expr}Expressions{}}
\new@anchor@label{sec178}{s:value-expr}{{11.7}{X}{\label{s:value-expr}Expressions}}
\@deflabeltype{s:value-expr}{section}
\stx@exists{expr}\stx@exists{argument}\stx@exists{pattern-matching}\stx@exists{let-binding}\stx@exists{parameter}\stx@exists{local-open-shorthand}\stx@exists{object-expr}\@@addtocsec{htoc}{ss:precedence-and-associativity}{1}{\@print{11.7.1}\quad{}\label{ss:precedence-and-associativity}Precedence and associativity{}}
\new@anchor@label{sec179}{ss:precedence-and-associativity}{{11.7.1}{X}{\label{ss:precedence-and-associativity}Precedence and associativity}}
\@deflabeltype{ss:precedence-and-associativity}{subsection}
\@@addtocsec{htoc}{ss:expr-basic}{1}{\@print{11.7.2}\quad{}\label{ss:expr-basic}Basic expressions{}}
\new@anchor@label{sec180}{ss:expr-basic}{{11.7.2}{X}{\label{ss:expr-basic}Basic expressions}}
\@deflabeltype{ss:expr-basic}{subsection}
\new@anchor@label{sec181}{sss:expr-constants}{{11.7.2}{X}{\label{ss:expr-basic}Basic expressions}}
\@deflabeltype{sss:expr-constants}{subsection}
\new@anchor@label{sec182}{sss:expr-var}{{11.7.2}{X}{\label{ss:expr-basic}Basic expressions}}
\@deflabeltype{sss:expr-var}{subsection}
\new@anchor@label{sec183}{sss:expr-parenthesized}{{11.7.2}{X}{\label{ss:expr-basic}Basic expressions}}
\@deflabeltype{sss:expr-parenthesized}{subsection}
\new@anchor@label{sec184}{sss:expr-functions-application}{{11.7.2}{X}{\label{ss:expr-basic}Basic expressions}}
\@deflabeltype{sss:expr-functions-application}{subsection}
\new@anchor@label{sec185}{sss:expr-function-definition}{{11.7.2}{X}{\label{ss:expr-basic}Basic expressions}}
\@deflabeltype{sss:expr-function-definition}{subsection}
\new@anchor@label{sec186}{sss:guards-in-pattern-matchings}{{11.7.2}{X}{\label{ss:expr-basic}Basic expressions}}
\@deflabeltype{sss:guards-in-pattern-matchings}{subsection}
\new@anchor@label{sec187}{sss:expr-localdef}{{11.7.2}{X}{\label{ss:expr-basic}Basic expressions}}
\@deflabeltype{sss:expr-localdef}{subsection}
\new@anchor@label{sec188}{sss:expr-explicit-polytype}{{11.7.2}{X}{\label{sss:expr-explicit-polytype}Explicit polymorphic type annotations}}
\@deflabeltype{sss:expr-explicit-polytype}{subsection}
\@@addtocsec{htoc}{ss:expr-control}{1}{\@print{11.7.3}\quad{}\label{ss:expr-control}Control structures{}}
\new@anchor@label{sec189}{ss:expr-control}{{11.7.3}{X}{\label{ss:expr-control}Control structures}}
\@deflabeltype{ss:expr-control}{subsection}
\new@anchor@label{sec190}{sss:expr-sequence}{{11.7.3}{X}{\label{ss:expr-control}Control structures}}
\@deflabeltype{sss:expr-sequence}{subsection}
\new@anchor@label{sec191}{sss:expr-conditional}{{11.7.3}{X}{\label{ss:expr-control}Control structures}}
\@deflabeltype{sss:expr-conditional}{subsection}
\new@anchor@label{sec192}{sss:expr-case}{{11.7.3}{X}{\label{ss:expr-control}Control structures}}
\@deflabeltype{sss:expr-case}{subsection}
\new@anchor@label{sec193}{sss:expr-boolean-operators}{{11.7.3}{X}{\label{ss:expr-control}Control structures}}
\@deflabeltype{sss:expr-boolean-operators}{subsection}
\new@anchor@label{sec194}{sss:expr-loops}{{11.7.3}{X}{\label{ss:expr-control}Control structures}}
\@deflabeltype{sss:expr-loops}{subsection}
\new@anchor@label{sec195}{sss:expr-exception-handling}{{11.7.3}{X}{\label{ss:expr-control}Control structures}}
\@deflabeltype{sss:expr-exception-handling}{subsection}
\@@addtocsec{htoc}{ss:expr-ops-on-data}{1}{\@print{11.7.4}\quad{}\label{ss:expr-ops-on-data}Operations on data structures{}}
\new@anchor@label{sec196}{ss:expr-ops-on-data}{{11.7.4}{X}{\label{ss:expr-ops-on-data}Operations on data structures}}
\@deflabeltype{ss:expr-ops-on-data}{subsection}
\new@anchor@label{sec197}{sss:expr-products}{{11.7.4}{X}{\label{ss:expr-ops-on-data}Operations on data structures}}
\@deflabeltype{sss:expr-products}{subsection}
\new@anchor@label{sec198}{sss:expr-variants}{{11.7.4}{X}{\label{ss:expr-ops-on-data}Operations on data structures}}
\@deflabeltype{sss:expr-variants}{subsection}
\new@anchor@label{sec199}{sss:expr-polyvars}{{11.7.4}{X}{\label{ss:expr-ops-on-data}Operations on data structures}}
\@deflabeltype{sss:expr-polyvars}{subsection}
\new@anchor@label{sec200}{sss:expr-records}{{11.7.4}{X}{\label{ss:expr-ops-on-data}Operations on data structures}}
\@deflabeltype{sss:expr-records}{subsection}
\new@anchor@label{sec201}{sss:expr-arrays}{{11.7.4}{X}{\label{ss:expr-ops-on-data}Operations on data structures}}
\@deflabeltype{sss:expr-arrays}{subsection}
\new@anchor@label{sec202}{sss:expr-strings}{{11.7.4}{X}{\label{ss:expr-ops-on-data}Operations on data structures}}
\@deflabeltype{sss:expr-strings}{subsection}
\@@addtocsec{htoc}{ss:expr-operators}{1}{\@print{11.7.5}\quad{}\label{ss:expr-operators}Operators{}}
\new@anchor@label{sec203}{ss:expr-operators}{{11.7.5}{X}{\label{ss:expr-operators}Operators}}
\@deflabeltype{ss:expr-operators}{subsection}
\@@addtocsec{htoc}{ss:expr-obj}{1}{\@print{11.7.6}\quad{}\label{ss:expr-obj}Objects{}}
\new@anchor@label{sec204}{ss:expr-obj}{{11.7.6}{X}{\label{ss:expr-obj}Objects}}
\@deflabeltype{ss:expr-obj}{subsection}
\newlabel{s:objects}{{11.7.6}{X}{\label{ss:expr-obj}Objects}}
\@deflabeltype{s:objects}{subsection}
\new@anchor@label{sec205}{sss:expr-obj-creation}{{11.7.6}{X}{\label{ss:expr-obj}Objects}}
\@deflabeltype{sss:expr-obj-creation}{subsection}
\new@anchor@label{sec206}{sss:expr-obj-immediate}{{11.7.6}{X}{\label{ss:expr-obj}Objects}}
\@deflabeltype{sss:expr-obj-immediate}{subsection}
\new@anchor@label{sec207}{sss:expr-method}{{11.7.6}{X}{\label{ss:expr-obj}Objects}}
\@deflabeltype{sss:expr-method}{subsection}
\new@anchor@label{sec208}{sss:expr-obj-variables}{{11.7.6}{X}{\label{ss:expr-obj}Objects}}
\@deflabeltype{sss:expr-obj-variables}{subsection}
\new@anchor@label{sec209}{sss:expr-obj-duplication}{{11.7.6}{X}{\label{ss:expr-obj}Objects}}
\@deflabeltype{sss:expr-obj-duplication}{subsection}
\@@addtocsec{htoc}{ss:expr-coercions}{1}{\@print{11.7.7}\quad{}\label{ss:expr-coercions}Coercions{}}
\new@anchor@label{sec210}{ss:expr-coercions}{{11.7.7}{X}{\label{ss:expr-coercions}Coercions}}
\@deflabeltype{ss:expr-coercions}{subsection}
\new@anchor@label{sec211}{sss:expr-obj-types}{{11.7.7}{X}{\label{ss:expr-coercions}Coercions}}
\@deflabeltype{sss:expr-obj-types}{subsection}
\new@anchor@label{sec212}{sss:expr-polyvar-types}{{11.7.7}{X}{\label{ss:expr-coercions}Coercions}}
\@deflabeltype{sss:expr-polyvar-types}{subsection}
\new@anchor@label{sec213}{sss:expr-variance}{{11.7.7}{X}{\label{ss:expr-coercions}Coercions}}
\@deflabeltype{sss:expr-variance}{subsection}
\@@addtocsec{htoc}{ss:expr-local-items}{1}{\@print{11.7.8}\quad{}\label{ss:expr-local-items}Local structure items{}}
\new@anchor@label{sec214}{ss:expr-local-items}{{11.7.8}{X}{\label{ss:expr-local-items}Local structure items}}
\@deflabeltype{ss:expr-local-items}{subsection}
\new@anchor@label{sec215}{sss:local-opens}{{11.7.8}{X}{\label{ss:expr-local-items}Local structure items}}
\@deflabeltype{sss:local-opens}{subsection}
\new@anchor@label{sec216}{sss:expr-local-modules}{{11.7.8}{X}{\label{ss:expr-local-items}Local structure items}}
\@deflabeltype{sss:expr-local-modules}{subsection}
\new@anchor@label{sec217}{sss:expr-let-exception}{{11.7.8}{X}{\label{sss:expr-let-exception}Local exceptions}}
\@deflabeltype{sss:expr-let-exception}{subsection}
\new@anchor@label{sec218}{sss:expr-let-type}{{11.7.8}{X}{\label{sss:expr-let-type}Local types}}
\@deflabeltype{sss:expr-let-type}{subsection}
\@@addtocsec{htoc}{ss:expr-other}{1}{\@print{11.7.9}\quad{}\label{ss:expr-other}Other{}}
\new@anchor@label{sec219}{ss:expr-other}{{11.7.9}{X}{\label{ss:expr-other}Other}}
\@deflabeltype{ss:expr-other}{subsection}
\new@anchor@label{sec220}{sss:expr-assertion}{{11.7.9}{X}{\label{ss:expr-other}Other}}
\@deflabeltype{sss:expr-assertion}{subsection}
\new@anchor@label{sec221}{sss:expr-lazy}{{11.7.9}{X}{\label{ss:expr-other}Other}}
\@deflabeltype{sss:expr-lazy}{subsection}
\@@addtocsec{htoc}{s:tydef}{0}{\@print{11.8}\quad{}\label{s:tydef}Type and exception definitions{}}
\new@anchor@label{sec222}{s:tydef}{{11.8}{X}{\label{s:tydef}Type and exception definitions}}
\@deflabeltype{s:tydef}{section}
\@@addtocsec{htoc}{ss:typedefs}{1}{\@print{11.8.1}\quad{}\label{ss:typedefs}Type definitions{}}
\new@anchor@label{sec223}{ss:typedefs}{{11.8.1}{X}{\label{ss:typedefs}Type definitions}}
\@deflabeltype{ss:typedefs}{subsection}
\stx@exists{type-definition}\stx@exists{typedef}\stx@exists{type-information}\stx@exists{type-equation}\stx@exists{type-representation}\stx@exists{type-params}\stx@exists{type-param}\stx@exists{ext-variance}\stx@exists{variance}\stx@exists{injectivity}\stx@exists{record-decl}\stx@exists{constr-decl}\stx@exists{constr-args}\stx@exists{field-decl}\stx@exists{type-constraint}\@@addtocsec{htoc}{ss:exndef}{1}{\@print{11.8.2}\quad{}\label{ss:exndef}Exception definitions{}}
\new@anchor@label{sec224}{ss:exndef}{{11.8.2}{X}{\label{ss:exndef}Exception definitions}}
\@deflabeltype{ss:exndef}{subsection}
\stx@exists{exception-definition}\@@addtocsec{htoc}{s:classes}{0}{\@print{11.9}\quad{}\label{s:classes}Classes{}}
\new@anchor@label{sec225}{s:classes}{{11.9}{X}{\label{s:classes}Classes}}
\@deflabeltype{s:classes}{section}
\@@addtocsec{htoc}{ss:classes:class-types}{1}{\@print{11.9.1}\quad{}\label{ss:classes:class-types}Class types{}}
\new@anchor@label{sec226}{ss:classes:class-types}{{11.9.1}{X}{\label{ss:classes:class-types}Class types}}
\@deflabeltype{ss:classes:class-types}{subsection}
\stx@exists{class-type}\stx@exists{class-body-type}\stx@exists{class-field-spec}\new@anchor@label{sec227}{sss:clty:simple}{{11.9.1}{X}{\label{ss:classes:class-types}Class types}}
\@deflabeltype{sss:clty:simple}{subsection}
\new@anchor@label{sec228}{sss:clty-fun}{{11.9.1}{X}{\label{ss:classes:class-types}Class types}}
\@deflabeltype{sss:clty-fun}{subsection}
\new@anchor@label{sec229}{sss:clty:body}{{11.9.1}{X}{\label{ss:classes:class-types}Class types}}
\@deflabeltype{sss:clty:body}{subsection}
\new@anchor@label{sec230}{sss:clty-open}{{11.9.1}{X}{\label{ss:classes:class-types}Class types}}
\@deflabeltype{sss:clty-open}{subsection}
\new@anchor@label{sec231}{sss:clty-inheritance}{{11.9.1}{X}{\label{ss:classes:class-types}Class types}}
\@deflabeltype{sss:clty-inheritance}{subsection}
\new@anchor@label{sec232}{sss:clty-variable}{{11.9.1}{X}{\label{ss:classes:class-types}Class types}}
\@deflabeltype{sss:clty-variable}{subsection}
\new@anchor@label{sec233}{sss:clty-meth}{{11.9.1}{X}{\label{ss:classes:class-types}Class types}}
\@deflabeltype{sss:clty-meth}{subsection}
\new@anchor@label{sec234}{sss:class-virtual-meth-spec}{{11.9.1}{X}{\label{ss:classes:class-types}Class types}}
\@deflabeltype{sss:class-virtual-meth-spec}{subsection}
\new@anchor@label{sec235}{sss:class-constraints}{{11.9.1}{X}{\label{ss:classes:class-types}Class types}}
\@deflabeltype{sss:class-constraints}{subsection}
\@@addtocsec{htoc}{ss:class-expr}{1}{\@print{11.9.2}\quad{}\label{ss:class-expr}Class expressions{}}
\new@anchor@label{sec236}{ss:class-expr}{{11.9.2}{X}{\label{ss:class-expr}Class expressions}}
\@deflabeltype{ss:class-expr}{subsection}
\stx@exists{class-expr}\stx@exists{class-field}\new@anchor@label{sec237}{sss:class-simple}{{11.9.2}{X}{\label{ss:class-expr}Class expressions}}
\@deflabeltype{sss:class-simple}{subsection}
\new@anchor@label{sec238}{sss:class-app}{{11.9.2}{X}{\label{ss:class-expr}Class expressions}}
\@deflabeltype{sss:class-app}{subsection}
\new@anchor@label{sec239}{sss:class-fun}{{11.9.2}{X}{\label{ss:class-expr}Class expressions}}
\@deflabeltype{sss:class-fun}{subsection}
\new@anchor@label{sec240}{sss:class-localdefs}{{11.9.2}{X}{\label{ss:class-expr}Class expressions}}
\@deflabeltype{sss:class-localdefs}{subsection}
\new@anchor@label{sec241}{sss:class-opens}{{11.9.2}{X}{\label{ss:class-expr}Class expressions}}
\@deflabeltype{sss:class-opens}{subsection}
\new@anchor@label{sec242}{sss:class-body}{{11.9.2}{X}{\label{ss:class-expr}Class expressions}}
\@deflabeltype{sss:class-body}{subsection}
\stx@exists{class-body}\new@anchor@label{sec243}{sss:class-inheritance}{{11.9.2}{X}{\label{ss:class-expr}Class expressions}}
\@deflabeltype{sss:class-inheritance}{subsection}
\new@anchor@label{sec244}{sss:class-variables}{{11.9.2}{X}{\label{ss:class-expr}Class expressions}}
\@deflabeltype{sss:class-variables}{subsection}
\new@anchor@label{sec245}{sss:class-virtual-variable}{{11.9.2}{X}{\label{ss:class-expr}Class expressions}}
\@deflabeltype{sss:class-virtual-variable}{subsection}
\new@anchor@label{sec246}{sss:class-method}{{11.9.2}{X}{\label{ss:class-expr}Class expressions}}
\@deflabeltype{sss:class-method}{subsection}
\new@anchor@label{sec247}{sss:class-virtual-meth}{{11.9.2}{X}{\label{ss:class-expr}Class expressions}}
\@deflabeltype{sss:class-virtual-meth}{subsection}
\new@anchor@label{sec248}{sss:class-explicit-overriding}{{11.9.2}{X}{\label{ss:class-expr}Class expressions}}
\@deflabeltype{sss:class-explicit-overriding}{subsection}
\new@anchor@label{sec249}{sss:class-type-constraints}{{11.9.2}{X}{\label{ss:class-expr}Class expressions}}
\@deflabeltype{sss:class-type-constraints}{subsection}
\new@anchor@label{sec250}{sss:class-initializers}{{11.9.2}{X}{\label{ss:class-expr}Class expressions}}
\@deflabeltype{sss:class-initializers}{subsection}
\@@addtocsec{htoc}{ss:class-def}{1}{\@print{11.9.3}\quad{}\label{ss:class-def}Class definitions{}}
\new@anchor@label{sec251}{ss:class-def}{{11.9.3}{X}{\label{ss:class-def}Class definitions}}
\@deflabeltype{ss:class-def}{subsection}
\newlabel{s:classdef}{{11.9.3}{X}{\label{ss:class-def}Class definitions}}
\@deflabeltype{s:classdef}{subsection}
\stx@exists{class-definition}\stx@exists{class-binding}\stx@exists{type-parameters}\new@anchor@label{sec252}{sss:class-virtual}{{11.9.3}{X}{\label{ss:class-def}Class definitions}}
\@deflabeltype{sss:class-virtual}{subsection}
\new@anchor@label{sec253}{sss:class-type-params}{{11.9.3}{X}{\label{ss:class-def}Class definitions}}
\@deflabeltype{sss:class-type-params}{subsection}
\@@addtocsec{htoc}{ss:class-spec}{1}{\@print{11.9.4}\quad{}\label{ss:class-spec}Class specifications{}}
\new@anchor@label{sec254}{ss:class-spec}{{11.9.4}{X}{\label{ss:class-spec}Class specifications}}
\@deflabeltype{ss:class-spec}{subsection}
\stx@exists{class-specification}\stx@exists{class-spec}\@@addtocsec{htoc}{ss:classtype}{1}{\@print{11.9.5}\quad{}\label{ss:classtype}Class type definitions{}}
\new@anchor@label{sec255}{ss:classtype}{{11.9.5}{X}{\label{ss:classtype}Class type definitions}}
\@deflabeltype{ss:classtype}{subsection}
\stx@exists{classtype-definition}\stx@exists{classtype-def}\@@addtocsec{htoc}{s:modtypes}{0}{\@print{11.10}\quad{}\label{s:modtypes}Module types (module specifications){}}
\new@anchor@label{sec256}{s:modtypes}{{11.10}{X}{\label{s:modtypes}Module types (module specifications)}}
\@deflabeltype{s:modtypes}{section}
\stx@exists{module-type}\stx@exists{mod-constraint}\stx@exists{specification}\@@addtocsec{htoc}{ss:mty-simple}{1}{\@print{11.10.1}\quad{}\label{ss:mty-simple}Simple module types{}}
\new@anchor@label{sec257}{ss:mty-simple}{{11.10.1}{X}{\label{ss:mty-simple}Simple module types}}
\@deflabeltype{ss:mty-simple}{subsection}
\@@addtocsec{htoc}{ss:mty-signatures}{1}{\@print{11.10.2}\quad{}\label{ss:mty-signatures}Signatures{}}
\new@anchor@label{sec258}{ss:mty-signatures}{{11.10.2}{X}{\label{ss:mty-signatures}Signatures}}
\@deflabeltype{ss:mty-signatures}{subsection}
\new@anchor@label{sec259}{sss:mty-values}{{11.10.2}{X}{\label{ss:mty-signatures}Signatures}}
\@deflabeltype{sss:mty-values}{subsection}
\new@anchor@label{sec260}{sss:mty-type}{{11.10.2}{X}{\label{ss:mty-signatures}Signatures}}
\@deflabeltype{sss:mty-type}{subsection}
\new@anchor@label{sec261}{sss:mty-exn}{{11.10.2}{X}{\label{ss:mty-signatures}Signatures}}
\@deflabeltype{sss:mty-exn}{subsection}
\new@anchor@label{sec262}{sss:mty-class}{{11.10.2}{X}{\label{ss:mty-signatures}Signatures}}
\@deflabeltype{sss:mty-class}{subsection}
\new@anchor@label{sec263}{sss:mty-classtype}{{11.10.2}{X}{\label{ss:mty-signatures}Signatures}}
\@deflabeltype{sss:mty-classtype}{subsection}
\new@anchor@label{sec264}{sss:mty-module}{{11.10.2}{X}{\label{ss:mty-signatures}Signatures}}
\@deflabeltype{sss:mty-module}{subsection}
\new@anchor@label{sec265}{sss:mty-mty}{{11.10.2}{X}{\label{ss:mty-signatures}Signatures}}
\@deflabeltype{sss:mty-mty}{subsection}
\new@anchor@label{sec266}{sss:mty-open}{{11.10.2}{X}{\label{sss:mty-open}Opening a module path}}
\@deflabeltype{sss:mty-open}{subsection}
\new@anchor@label{sec267}{sss:mty-include}{{11.10.2}{X}{\label{sss:mty-include}Including a signature}}
\@deflabeltype{sss:mty-include}{subsection}
\@@addtocsec{htoc}{ss:mty-functors}{1}{\@print{11.10.3}\quad{}\label{ss:mty-functors}Functor types{}}
\new@anchor@label{sec268}{ss:mty-functors}{{11.10.3}{X}{\label{ss:mty-functors}Functor types}}
\@deflabeltype{ss:mty-functors}{subsection}
\@@addtocsec{htoc}{ss:mty-with}{1}{\@print{11.10.4}\quad{}\label{ss:mty-with}The {\machine{with}} operator{}}
\new@anchor@label{sec269}{ss:mty-with}{{11.10.4}{X}{\label{ss:mty-with}The {\machine{with}} operator}}
\@deflabeltype{ss:mty-with}{subsection}
\@@addtocsec{htoc}{s:module-expr}{0}{\@print{11.11}\quad{}\label{s:module-expr}Module expressions (module implementations){}}
\new@anchor@label{sec270}{s:module-expr}{{11.11}{X}{\label{s:module-expr}Module expressions (module implementations)}}
\@deflabeltype{s:module-expr}{section}
\stx@exists{module-expr}\stx@exists{module-items}\stx@exists{module-definition}\stx@exists{local-definition}\stx@exists{definition}\@@addtocsec{htoc}{ss:mexpr-simple}{1}{\@print{11.11.1}\quad{}\label{ss:mexpr-simple}Simple module expressions{}}
\new@anchor@label{sec271}{ss:mexpr-simple}{{11.11.1}{X}{\label{ss:mexpr-simple}Simple module expressions}}
\@deflabeltype{ss:mexpr-simple}{subsection}
\@@addtocsec{htoc}{ss:mexpr-structures}{1}{\@print{11.11.2}\quad{}\label{ss:mexpr-structures}Structures{}}
\new@anchor@label{sec272}{ss:mexpr-structures}{{11.11.2}{X}{\label{ss:mexpr-structures}Structures}}
\@deflabeltype{ss:mexpr-structures}{subsection}
\new@anchor@label{sec273}{sss:mexpr-value-defs}{{11.11.2}{X}{\label{ss:mexpr-structures}Structures}}
\@deflabeltype{sss:mexpr-value-defs}{subsection}
\new@anchor@label{sec274}{sss:mexpr-type-defs}{{11.11.2}{X}{\label{ss:mexpr-structures}Structures}}
\@deflabeltype{sss:mexpr-type-defs}{subsection}
\new@anchor@label{sec275}{sss:mexpr-exn-defs}{{11.11.2}{X}{\label{ss:mexpr-structures}Structures}}
\@deflabeltype{sss:mexpr-exn-defs}{subsection}
\new@anchor@label{sec276}{sss:mexpr-class-defs}{{11.11.2}{X}{\label{ss:mexpr-structures}Structures}}
\@deflabeltype{sss:mexpr-class-defs}{subsection}
\new@anchor@label{sec277}{sss:mexpr-classtype-defs}{{11.11.2}{X}{\label{ss:mexpr-structures}Structures}}
\@deflabeltype{sss:mexpr-classtype-defs}{subsection}
\new@anchor@label{sec278}{sss:mexpr-module-defs}{{11.11.2}{X}{\label{ss:mexpr-structures}Structures}}
\@deflabeltype{sss:mexpr-module-defs}{subsection}
\new@anchor@label{sec279}{sss:mexpr-modtype-defs}{{11.11.2}{X}{\label{ss:mexpr-structures}Structures}}
\@deflabeltype{sss:mexpr-modtype-defs}{subsection}
\new@anchor@label{sec280}{sss:mexpr-open}{{11.11.2}{X}{\label{ss:mexpr-structures}Structures}}
\@deflabeltype{sss:mexpr-open}{subsection}
\new@anchor@label{sec281}{sss:mexpr-include}{{11.11.2}{X}{\label{ss:mexpr-structures}Structures}}
\@deflabeltype{sss:mexpr-include}{subsection}
\@@addtocsec{htoc}{ss:mexpr-functors}{1}{\@print{11.11.3}\quad{}\label{ss:mexpr-functors}Functors{}}
\new@anchor@label{sec282}{ss:mexpr-functors}{{11.11.3}{X}{\label{ss:mexpr-functors}Functors}}
\@deflabeltype{ss:mexpr-functors}{subsection}
\new@anchor@label{sec283}{sss:mexpr-functor-defs}{{11.11.3}{X}{\label{ss:mexpr-functors}Functors}}
\@deflabeltype{sss:mexpr-functor-defs}{subsection}
\new@anchor@label{sec284}{sss:mexpr-functor-app}{{11.11.3}{X}{\label{ss:mexpr-functors}Functors}}
\@deflabeltype{sss:mexpr-functor-app}{subsection}
\@@addtocsec{htoc}{s:compilation-units}{0}{\@print{11.12}\quad{}\label{s:compilation-units}Compilation units{}}
\new@anchor@label{sec285}{s:compilation-units}{{11.12}{X}{\label{s:compilation-units}Compilation units}}
\@deflabeltype{s:compilation-units}{section}
\stx@exists{unit-interface}\stx@exists{unit-implementation}\@@addtocsec{htoc}{sec286}{-1}{\@print{Chapter 12}\quad{}Language extensions{}}
\newlabel{c:extensions}{{12}{X}{Language extensions}}
\@deflabeltype{c:extensions}{chapter}
\@@addtocsec{htoc}{s:letrecvalues}{0}{\@print{12.1}\quad{}\label{s:letrecvalues}Recursive definitions of values{}}
\new@anchor@label{sec287}{s:letrecvalues}{{12.1}{X}{\label{s:letrecvalues}Recursive definitions of values}}
\@deflabeltype{s:letrecvalues}{section}
\@@addtocsec{htoc}{s:recursive-modules}{0}{\@print{12.2}\quad{}\label{s:recursive-modules}Recursive modules{}}
\new@anchor@label{sec288}{s:recursive-modules}{{12.2}{X}{\label{s:recursive-modules}Recursive modules}}
\@deflabeltype{s:recursive-modules}{section}
\@@addtocsec{htoc}{s:private-types}{0}{\@print{12.3}\quad{}\label{s:private-types}Private types{}}
\new@anchor@label{sec289}{s:private-types}{{12.3}{X}{\label{s:private-types}Private types}}
\@deflabeltype{s:private-types}{section}
\@@addtocsec{htoc}{ss:private-types-variant}{1}{\@print{12.3.1}\quad{}\label{ss:private-types-variant}Private variant and record types{}}
\new@anchor@label{sec290}{ss:private-types-variant}{{12.3.1}{X}{\label{ss:private-types-variant}Private variant and record types}}
\@deflabeltype{ss:private-types-variant}{subsection}
\@@addtocsec{htoc}{ss:private-types-abbrev}{1}{\@print{12.3.2}\quad{}\label{ss:private-types-abbrev}Private type abbreviations{}}
\new@anchor@label{sec291}{ss:private-types-abbrev}{{12.3.2}{X}{\label{ss:private-types-abbrev}Private type abbreviations}}
\@deflabeltype{ss:private-types-abbrev}{subsection}
\@@addtocsec{htoc}{ss:private-rows}{1}{\@print{12.3.3}\quad{}\label{ss:private-rows}Private row types{}}
\new@anchor@label{sec292}{ss:private-rows}{{12.3.3}{X}{\label{ss:private-rows}Private row types}}
\@deflabeltype{ss:private-rows}{subsection}
\@@addtocsec{htoc}{s:locally-abstract}{0}{\@print{12.4}\quad{}\label{s:locally-abstract}Locally abstract types{}}
\new@anchor@label{sec293}{s:locally-abstract}{{12.4}{X}{\label{s:locally-abstract}Locally abstract types}}
\@deflabeltype{s:locally-abstract}{section}
\new@anchor@label{sec294}{p:polymorpic-locally-abstract}{{12.4}{X}{\label{p:polymorpic-locally-abstract}Polymorphic syntax}}
\@deflabeltype{p:polymorpic-locally-abstract}{section}
\@@addtocsec{htoc}{s:first-class-modules}{0}{\@print{12.5}\quad{}\label{s:first-class-modules}Module-dependent functions and first-class modules{}}
\new@anchor@label{sec295}{s:first-class-modules}{{12.5}{X}{\label{s:first-class-modules}Module-dependent functions and first-class modules}}
\@deflabeltype{s:first-class-modules}{section}
\@@addtocsec{htoc}{ss:fst-mod-intro}{1}{\@print{12.5.1}\quad{}\label{ss:fst-mod-intro}Introduction{}}
\new@anchor@label{sec296}{ss:fst-mod-intro}{{12.5.1}{X}{\label{ss:fst-mod-intro}Introduction}}
\@deflabeltype{ss:fst-mod-intro}{subsection}
\new@anchor@label{sec297}{p:fst-mod-intro-mod-fun}{{12.5.1}{X}{\label{p:fst-mod-intro-mod-fun}Module-dependent functions: functions parameterized over a module}}
\@deflabeltype{p:fst-mod-intro-mod-fun}{subsection}
\new@anchor@label{sec298}{p:fst-mod-intro-algebraic-structures}{{12.5.1}{X}{\label{p:fst-mod-intro-algebraic-structures}Use-case: abstracting over algebraic structures}}
\@deflabeltype{p:fst-mod-intro-algebraic-structures}{subsection}
\new@anchor@label{sec299}{p:fst-mod-intro-dynamic}{{12.5.1}{X}{\label{p:fst-mod-intro-dynamic}First-class modules}}
\@deflabeltype{p:fst-mod-intro-dynamic}{subsection}
\new@anchor@label{sec300}{p:fst-mod-intro-limitation-dynamic-arg}{{12.5.1}{X}{\label{p:fst-mod-intro-limitation-dynamic-arg}Limitation: selecting a module at runtime}}
\@deflabeltype{p:fst-mod-intro-limitation-dynamic-arg}{subsection}
\new@anchor@label{sec301}{p:fst-mod-intro-limitation-nary-app}{{12.5.1}{X}{\label{p:fst-mod-intro-limitation-nary-app}Limitation: n-ary applications}}
\@deflabeltype{p:fst-mod-intro-limitation-nary-app}{subsection}
\new@anchor@label{sec302}{p:fst-mod-compatibility}{{12.5.1}{X}{\label{p:fst-mod-compatibility}Compatibility}}
\@deflabeltype{p:fst-mod-compatibility}{subsection}
\@@addtocsec{htoc}{ss:fst-mod-reference}{1}{\@print{12.5.2}\quad{}\label{ss:fst-mod-reference}Reference{}}
\new@anchor@label{sec303}{ss:fst-mod-reference}{{12.5.2}{X}{\label{ss:fst-mod-reference}Reference}}
\@deflabeltype{ss:fst-mod-reference}{subsection}
\stx@exists{package-type}\stx@exists{package-constraint}\@@addtocsec{htoc}{s:module-type-of}{0}{\@print{12.6}\quad{}\label{s:module-type-of}Recovering the type of a module{}}
\new@anchor@label{sec304}{s:module-type-of}{{12.6}{X}{\label{s:module-type-of}Recovering the type of a module}}
\@deflabeltype{s:module-type-of}{section}
\@@addtocsec{htoc}{s:signature-substitution}{0}{\@print{12.7}\quad{}\label{s:signature-substitution}Substituting inside a signature{}}
\new@anchor@label{sec305}{s:signature-substitution}{{12.7}{X}{\label{s:signature-substitution}Substituting inside a signature}}
\@deflabeltype{s:signature-substitution}{section}
\@@addtocsec{htoc}{ss:destructive-substitution}{1}{\@print{12.7.1}\quad{}\label{ss:destructive-substitution}Destructive substitutions{}}
\new@anchor@label{sec306}{ss:destructive-substitution}{{12.7.1}{X}{\label{ss:destructive-substitution}Destructive substitutions}}
\@deflabeltype{ss:destructive-substitution}{subsection}
\@@addtocsec{htoc}{ss:local-substitution}{1}{\@print{12.7.2}\quad{}\label{ss:local-substitution}Local substitution declarations{}}
\new@anchor@label{sec307}{ss:local-substitution}{{12.7.2}{X}{\label{ss:local-substitution}Local substitution declarations}}
\@deflabeltype{ss:local-substitution}{subsection}
\stx@exists{type-subst}\@@addtocsec{htoc}{ss:module-type-substitution}{1}{\@print{12.7.3}\quad{}\label{ss:module-type-substitution}Module type substitutions{}}
\new@anchor@label{sec308}{ss:module-type-substitution}{{12.7.3}{X}{\label{ss:module-type-substitution}Module type substitutions}}
\@deflabeltype{ss:module-type-substitution}{subsection}
\new@anchor@label{sec309}{ss:module-type-substitution-limitations}{{12.7.3}{X}{\label{ss:module-type-substitution}Module type substitutions}}
\@deflabeltype{ss:module-type-substitution-limitations}{subsection}
\@@addtocsec{htoc}{s:module-alias}{0}{\@print{12.8}\quad{}\label{s:module-alias}Type-level module aliases{}}
\new@anchor@label{sec310}{s:module-alias}{{12.8}{X}{\label{s:module-alias}Type-level module aliases}}
\@deflabeltype{s:module-alias}{section}
\@@addtocsec{htoc}{s:explicit-overriding-open}{0}{\@print{12.9}\quad{}\label{s:explicit-overriding-open}Overriding in open statements{}}
\new@anchor@label{sec311}{s:explicit-overriding-open}{{12.9}{X}{\label{s:explicit-overriding-open}Overriding in open statements}}
\@deflabeltype{s:explicit-overriding-open}{section}
\@@addtocsec{htoc}{s:gadts}{0}{\@print{12.10}\quad{}\label{s:gadts}Generalized algebraic datatypes{}}
\new@anchor@label{sec312}{s:gadts}{{12.10}{X}{\label{s:gadts}Generalized algebraic datatypes}}
\@deflabeltype{s:gadts}{section}
\stx@exists{matching-case}\@@addtocsec{htoc}{s:bigarray-access}{0}{\@print{12.11}\quad{}\label{s:bigarray-access}Syntax for Bigarray access{}}
\new@anchor@label{sec313}{s:bigarray-access}{{12.11}{X}{\label{s:bigarray-access}Syntax for Bigarray access}}
\@deflabeltype{s:bigarray-access}{section}
\@@addtocsec{htoc}{s:attributes}{0}{\@print{12.12}\quad{}\label{s:attributes}Attributes{}}
\new@anchor@label{sec314}{s:attributes}{{12.12}{X}{\label{s:attributes}Attributes}}
\@deflabeltype{s:attributes}{section}
\stx@exists{attr-id}\stx@exists{attr-payload}\stx@exists{attribute}\stx@exists{item-attribute}\stx@exists{floating-attribute}\@@addtocsec{htoc}{ss:builtin-attributes}{1}{\@print{12.12.1}\quad{}\label{ss:builtin-attributes}Built-in attributes{}}
\new@anchor@label{sec315}{ss:builtin-attributes}{{12.12.1}{X}{\label{ss:builtin-attributes}Built-in attributes}}
\@deflabeltype{ss:builtin-attributes}{subsection}
\@@addtocsec{htoc}{s:extension-nodes}{0}{\@print{12.13}\quad{}\label{s:extension-nodes}Extension nodes{}}
\new@anchor@label{sec316}{s:extension-nodes}{{12.13}{X}{\label{s:extension-nodes}Extension nodes}}
\@deflabeltype{s:extension-nodes}{section}
\stx@exists{extension}\stx@exists{item-extension}\@@addtocsec{htoc}{ss:builtin-extension-nodes}{1}{\@print{12.13.1}\quad{}\label{ss:builtin-extension-nodes}Built-in extension nodes{}}
\new@anchor@label{sec317}{ss:builtin-extension-nodes}{{12.13.1}{X}{\label{ss:builtin-extension-nodes}Built-in extension nodes}}
\@deflabeltype{ss:builtin-extension-nodes}{subsection}
\@@addtocsec{htoc}{s:extensible-variants}{0}{\@print{12.14}\quad{}\label{s:extensible-variants}Extensible variant types{}}
\new@anchor@label{sec318}{s:extensible-variants}{{12.14}{X}{\label{s:extensible-variants}Extensible variant types}}
\@deflabeltype{s:extensible-variants}{section}
\stx@exists{type-extension-spec}\stx@exists{type-extension-def}\stx@exists{constr-def}\@@addtocsec{htoc}{ss:private-extensible}{1}{\@print{12.14.1}\quad{}\label{ss:private-extensible}Private extensible variant types{}}
\new@anchor@label{sec319}{ss:private-extensible}{{12.14.1}{X}{\label{ss:private-extensible}Private extensible variant types}}
\@deflabeltype{ss:private-extensible}{subsection}
\@@addtocsec{htoc}{s:generative-functors}{0}{\@print{12.15}\quad{}\label{s:generative-functors}Generative functors{}}
\new@anchor@label{sec320}{s:generative-functors}{{12.15}{X}{\label{s:generative-functors}Generative functors}}
\@deflabeltype{s:generative-functors}{section}
\@@addtocsec{htoc}{s:extension-syntax}{0}{\@print{12.16}\quad{}\label{s:extension-syntax}Extension-only syntax{}}
\new@anchor@label{sec321}{s:extension-syntax}{{12.16}{X}{\label{s:extension-syntax}Extension-only syntax}}
\@deflabeltype{s:extension-syntax}{section}
\@@addtocsec{htoc}{ss:extension-operators}{1}{\@print{12.16.1}\quad{}\label{ss:extension-operators}Extension operators{}}
\new@anchor@label{sec322}{ss:extension-operators}{{12.16.1}{X}{\label{ss:extension-operators}Extension operators}}
\@deflabeltype{ss:extension-operators}{subsection}
\newlabel{s:ext-ops}{{12.16.1}{X}{\label{ss:extension-operators}Extension operators}}
\@deflabeltype{s:ext-ops}{subsection}
\@@addtocsec{htoc}{ss:extension-literals}{1}{\@print{12.16.2}\quad{}\label{ss:extension-literals}Extension literals{}}
\new@anchor@label{sec323}{ss:extension-literals}{{12.16.2}{X}{\label{ss:extension-literals}Extension literals}}
\@deflabeltype{ss:extension-literals}{subsection}
\stx@exists{int-literal}\@@addtocsec{htoc}{s:inline-records}{0}{\@print{12.17}\quad{}\label{s:inline-records}Inline records{}}
\new@anchor@label{sec324}{s:inline-records}{{12.17}{X}{\label{s:inline-records}Inline records}}
\@deflabeltype{s:inline-records}{section}
\@@addtocsec{htoc}{s:doc-comments}{0}{\@print{12.18}\quad{}\label{s:doc-comments}Documentation comments{}}
\new@anchor@label{sec325}{s:doc-comments}{{12.18}{X}{\label{s:doc-comments}Documentation comments}}
\@deflabeltype{s:doc-comments}{section}
\@@addtocsec{htoc}{ss:floating-comments}{1}{\@print{12.18.1}\quad{}\label{ss:floating-comments}Floating comments{}}
\new@anchor@label{sec326}{ss:floating-comments}{{12.18.1}{X}{\label{ss:floating-comments}Floating comments}}
\@deflabeltype{ss:floating-comments}{subsection}
\@@addtocsec{htoc}{ss:item-comments}{1}{\@print{12.18.2}\quad{}\label{ss:item-comments}Item comments{}}
\new@anchor@label{sec327}{ss:item-comments}{{12.18.2}{X}{\label{ss:item-comments}Item comments}}
\@deflabeltype{ss:item-comments}{subsection}
\@@addtocsec{htoc}{ss:label-comments}{1}{\@print{12.18.3}\quad{}\label{ss:label-comments}Label comments{}}
\new@anchor@label{sec328}{ss:label-comments}{{12.18.3}{X}{\label{ss:label-comments}Label comments}}
\@deflabeltype{ss:label-comments}{subsection}
\@@addtocsec{htoc}{s:index-operators}{0}{\@print{12.19}\quad{}\label{s:index-operators}Extended indexing operators {}}
\new@anchor@label{sec329}{s:index-operators}{{12.19}{X}{\label{s:index-operators}Extended indexing operators }}
\@deflabeltype{s:index-operators}{section}
\stx@exists{dot-ext}\stx@exists{dot-operator-char}\@@addtocsec{htoc}{ss:multiindexing}{1}{\@print{12.19.1}\quad{}\label{ss:multiindexing}Multi-index notation{}}
\new@anchor@label{sec330}{ss:multiindexing}{{12.19.1}{X}{\label{ss:multiindexing}Multi-index notation}}
\@deflabeltype{ss:multiindexing}{subsection}
\@@addtocsec{htoc}{s:empty-variants}{0}{\@print{12.20}\quad{}\label{s:empty-variants}Empty variant types{}}
\new@anchor@label{sec331}{s:empty-variants}{{12.20}{X}{\label{s:empty-variants}Empty variant types}}
\@deflabeltype{s:empty-variants}{section}
\@@addtocsec{htoc}{s:alerts}{0}{\@print{12.21}\quad{}\label{s:alerts}Alerts{}}
\new@anchor@label{sec332}{s:alerts}{{12.21}{X}{\label{s:alerts}Alerts}}
\@deflabeltype{s:alerts}{section}
\@@addtocsec{htoc}{ss:alert_marking}{1}{\@print{12.21.1}\quad{}\label{ss:alert_marking}Marking a component{}}
\new@anchor@label{sec333}{ss:alert_marking}{{12.21.1}{X}{\label{ss:alert_marking}Marking a component}}
\@deflabeltype{ss:alert_marking}{subsection}
\@@addtocsec{htoc}{ss:control}{1}{\@print{12.21.2}\quad{}\label{ss:control}Controlling which alerts are enabled{}}
\new@anchor@label{sec334}{ss:control}{{12.21.2}{X}{\label{ss:control}Controlling which alerts are enabled}}
\@deflabeltype{ss:control}{subsection}
\@@addtocsec{htoc}{ss:alert_deprecated}{1}{\@print{12.21.3}\quad{}\label{ss:alert_deprecated}Shorthand syntax for deprecation{}}
\new@anchor@label{sec335}{ss:alert_deprecated}{{12.21.3}{X}{\label{ss:alert_deprecated}Shorthand syntax for deprecation}}
\@deflabeltype{ss:alert_deprecated}{subsection}
\@@addtocsec{htoc}{s:generalized-open}{0}{\@print{12.22}\quad{}\label{s:generalized-open}Generalized open statements{}}
\new@anchor@label{sec336}{s:generalized-open}{{12.22}{X}{\label{s:generalized-open}Generalized open statements}}
\@deflabeltype{s:generalized-open}{section}
\@@addtocsec{htoc}{s:binding-operators}{0}{\@print{12.23}\quad{}\label{s:binding-operators}Binding operators{}}
\new@anchor@label{sec337}{s:binding-operators}{{12.23}{X}{\label{s:binding-operators}Binding operators}}
\@deflabeltype{s:binding-operators}{section}
\stx@exists{let-operator}\stx@exists{and-operator}\stx@exists{letop-binding}\@@addtocsec{htoc}{ss:letop-examples}{1}{\@print{12.23.1}\quad{}\label{ss:letop-examples}Examples{}}
\new@anchor@label{sec338}{ss:letop-examples}{{12.23.1}{X}{\label{ss:letop-examples}Examples}}
\@deflabeltype{ss:letop-examples}{subsection}
\@@addtocsec{htoc}{ss:letops-conventions}{1}{\@print{12.23.2}\quad{}\label{ss:letops-conventions}Conventions{}}
\new@anchor@label{sec339}{ss:letops-conventions}{{12.23.2}{X}{\label{ss:letops-conventions}Conventions}}
\@deflabeltype{ss:letops-conventions}{subsection}
\@@addtocsec{htoc}{ss:letop-rules}{1}{\@print{12.23.3}\quad{}\label{ss:letop-rules}General desugaring rules{}}
\new@anchor@label{sec340}{ss:letop-rules}{{12.23.3}{X}{\label{ss:letop-rules}General desugaring rules}}
\@deflabeltype{ss:letop-rules}{subsection}
\@@addtocsec{htoc}{ss:letops-punning}{1}{\@print{12.23.4}\quad{}\label{ss:letops-punning}Short notation for variable bindings (let-punning){}}
\new@anchor@label{sec341}{ss:letops-punning}{{12.23.4}{X}{\label{ss:letops-punning}Short notation for variable bindings (let-punning)}}
\@deflabeltype{ss:letops-punning}{subsection}
\@@addtocsec{htoc}{s:effect-handlers}{0}{\@print{12.24}\quad{}\label{s:effect-handlers}Effect handlers{}}
\new@anchor@label{sec342}{s:effect-handlers}{{12.24}{X}{\label{s:effect-handlers}Effect handlers}}
\@deflabeltype{s:effect-handlers}{section}
\@@addtocsec{htoc}{s:effects-basics}{1}{\@print{12.24.1}\quad{}\label{s:effects-basics}Basics{}}
\new@anchor@label{sec343}{s:effects-basics}{{12.24.1}{X}{\label{s:effects-basics}Basics}}
\@deflabeltype{s:effects-basics}{subsection}
\@@addtocsec{htoc}{s:effects-concurrency}{1}{\@print{12.24.2}\quad{}\label{s:effects-concurrency}Concurrency{}}
\new@anchor@label{sec344}{s:effects-concurrency}{{12.24.2}{X}{\label{s:effects-concurrency}Concurrency}}
\@deflabeltype{s:effects-concurrency}{subsection}
\@@addtocsec{htoc}{s:effects-user-threads}{1}{\@print{12.24.3}\quad{}\label{s:effects-user-threads}User-level threads{}}
\new@anchor@label{sec345}{s:effects-user-threads}{{12.24.3}{X}{\label{s:effects-user-threads}User-level threads}}
\@deflabeltype{s:effects-user-threads}{subsection}
\new@anchor@label{sec346}{s:effects-discontinue}{{12.24.3}{X}{\label{s:effects-discontinue}Resuming with an exception}}
\@deflabeltype{s:effects-discontinue}{subsection}
\@@addtocsec{htoc}{s:effects-sequence}{1}{\@print{12.24.4}\quad{}\label{s:effects-sequence}Control inversion{}}
\new@anchor@label{sec347}{s:effects-sequence}{{12.24.4}{X}{\label{s:effects-sequence}Control inversion}}
\@deflabeltype{s:effects-sequence}{subsection}
\new@anchor@label{sec348}{s:effects-sequence-implementation}{{12.24.4}{X}{\label{s:effects-sequence-implementation}Implementing control inversion}}
\@deflabeltype{s:effects-sequence-implementation}{subsection}
\@@addtocsec{htoc}{s:effects-semantics}{1}{\@print{12.24.5}\quad{}\label{s:effects-semantics}Semantics{}}
\new@anchor@label{sec349}{s:effects-semantics}{{12.24.5}{X}{\label{s:effects-semantics}Semantics}}
\@deflabeltype{s:effects-semantics}{subsection}
\new@anchor@label{sec350}{s:effects-nesting}{{12.24.5}{X}{\label{s:effects-nesting}Nesting handlers}}
\@deflabeltype{s:effects-nesting}{subsection}
\new@anchor@label{sec351}{s:effects-fibers}{{12.24.5}{X}{\label{s:effects-fibers}Fibers}}
\@deflabeltype{s:effects-fibers}{subsection}
\new@anchor@label{sec352}{s:effects-unhandled}{{12.24.5}{X}{\label{s:effects-unhandled}Unhandled effects}}
\@deflabeltype{s:effects-unhandled}{subsection}
\new@anchor@label{sec353}{s:effects-linearity}{{12.24.5}{X}{\label{s:effects-linearity}Linear continuations}}
\@deflabeltype{s:effects-linearity}{subsection}
\new@anchor@label{sec354}{s:effects-limitations}{{12.24.5}{X}{\label{s:effects-limitations}Limitations}}
\@deflabeltype{s:effects-limitations}{subsection}
\@@addtocsec{htoc}{s:effects-shallow}{1}{\@print{12.24.6}\quad{}\label{s:effects-shallow}Shallow handlers{}}
\new@anchor@label{sec355}{s:effects-shallow}{{12.24.6}{X}{\label{s:effects-shallow}Shallow handlers}}
\@deflabeltype{s:effects-shallow}{subsection}
\@@addtocsec{htoc}{s:array-literals}{0}{\@print{12.25}\quad{}\label{s:array-literals}Type-directed disambiguation of array literals{}}
\new@anchor@label{sec356}{s:array-literals}{{12.25}{X}{\label{s:array-literals}Type-directed disambiguation of array literals}}
\@deflabeltype{s:array-literals}{section}
\@@addtocsec{htoc}{s:labeled-tuples}{0}{\@print{12.26}\quad{}\label{s:labeled-tuples}Labeled tuples{}}
\new@anchor@label{sec357}{s:labeled-tuples}{{12.26}{X}{\label{s:labeled-tuples}Labeled tuples}}
\@deflabeltype{s:labeled-tuples}{section}
\new@anchor@label{sec358}{sss:labledtuples-reordering}{{12.26}{X}{\label{s:labeled-tuples}Labeled tuples}}
\@deflabeltype{sss:labledtuples-reordering}{section}
\new@anchor@label{sec359}{sss:labledtuples-limitations}{{12.26}{X}{\label{s:labeled-tuples}Labeled tuples}}
\@deflabeltype{sss:labledtuples-limitations}{section}
\new@anchor@label{sec360}{sss:labledtuples-smlrelation}{{12.26}{X}{\label{s:labeled-tuples}Labeled tuples}}
\@deflabeltype{sss:labledtuples-smlrelation}{section}
\@@addtocsec{htoc}{s:external-types}{0}{\@print{12.27}\quad{}\label{s:external-types}External types{}}
\new@anchor@label{sec361}{s:external-types}{{12.27}{X}{\label{s:external-types}External types}}
\@deflabeltype{s:external-types}{section}
\@@addtocsec{htoc}{sec364}{-2}{\@print{Part III}\quad{}The OCaml tools{}}
\newlabel{p:commands}{{III}{X}{The OCaml tools}}
\@deflabeltype{p:commands}{part}
\@@addtocsec{htoc}{sec365}{-1}{\@print{Chapter 13}\quad{}Batch compilation (ocamlc){}}
\newlabel{c:camlc}{{13}{X}{Batch compilation (ocamlc)}}
\@deflabeltype{c:camlc}{chapter}
\@@addtocsec{htoc}{s:comp-overview}{0}{\@print{13.1}\quad{}\label{s:comp-overview}Overview of the compiler{}}
\new@anchor@label{sec366}{s:comp-overview}{{13.1}{X}{\label{s:comp-overview}Overview of the compiler}}
\@deflabeltype{s:comp-overview}{section}
\@@addtocsec{htoc}{s:comp-options}{0}{\@print{13.2}\quad{}\label{s:comp-options}Options{}}
\new@anchor@label{sec367}{s:comp-options}{{13.2}{X}{\label{s:comp-options}Options}}
\@deflabeltype{s:comp-options}{section}
\@@addtocsec{htoc}{s:modules-file-system}{0}{\@print{13.3}\quad{}\label{s:modules-file-system}Modules and the file system{}}
\new@anchor@label{sec369}{s:modules-file-system}{{13.3}{X}{\label{s:modules-file-system}Modules and the file system}}
\@deflabeltype{s:modules-file-system}{section}
\@@addtocsec{htoc}{s:comp-errors}{0}{\@print{13.4}\quad{}\label{s:comp-errors}Common errors{}}
\new@anchor@label{sec370}{s:comp-errors}{{13.4}{X}{\label{s:comp-errors}Common errors}}
\@deflabeltype{s:comp-errors}{section}
\@@addtocsec{htoc}{s:comp-warnings}{0}{\@print{13.5}\quad{}\label{s:comp-warnings}Warning reference{}}
\new@anchor@label{sec371}{s:comp-warnings}{{13.5}{X}{\label{s:comp-warnings}Warning reference}}
\@deflabeltype{s:comp-warnings}{section}
\@@addtocsec{htoc}{ss:warn6}{1}{\@print{13.5.1}\quad{}\label{ss:warn6}Warning 6: Label omitted in function application{}}
\new@anchor@label{sec372}{ss:warn6}{{13.5.1}{X}{\label{ss:warn6}Warning 6: Label omitted in function application}}
\@deflabeltype{ss:warn6}{subsection}
\@@addtocsec{htoc}{ss:warn9}{1}{\@print{13.5.2}\quad{}\label{ss:warn9}Warning 9: missing fields in a record pattern{}}
\new@anchor@label{sec373}{ss:warn9}{{13.5.2}{X}{\label{ss:warn9}Warning 9: missing fields in a record pattern}}
\@deflabeltype{ss:warn9}{subsection}
\@@addtocsec{htoc}{ss:warn52}{1}{\@print{13.5.3}\quad{}\label{ss:warn52}Warning 52: fragile constant pattern{}}
\new@anchor@label{sec374}{ss:warn52}{{13.5.3}{X}{\label{ss:warn52}Warning 52: fragile constant pattern}}
\@deflabeltype{ss:warn52}{subsection}
\@@addtocsec{htoc}{ss:warn57}{1}{\@print{13.5.4}\quad{}\label{ss:warn57}Warning 57: Ambiguous or-pattern variables under guard{}}
\new@anchor@label{sec375}{ss:warn57}{{13.5.4}{X}{\label{ss:warn57}Warning 57: Ambiguous or-pattern variables under guard}}
\@deflabeltype{ss:warn57}{subsection}
\@@addtocsec{htoc}{ss:warn74}{1}{\@print{13.5.5}\quad{}\label{ss:warn74}Warning 74: Pattern matching degraded to partial.{}}
\new@anchor@label{sec376}{ss:warn74}{{13.5.5}{X}{\label{ss:warn74}Warning 74: Pattern matching degraded to partial.}}
\@deflabeltype{ss:warn74}{subsection}
\@@addtocsec{htoc}{sec378}{-1}{\@print{Chapter 14}\quad{}The toplevel system or REPL (ocaml){}}
\newlabel{c:camllight}{{14}{X}{The toplevel system or REPL (ocaml)}}
\@deflabeltype{c:camllight}{chapter}
\stx@exists{toplevel-input}\stx@exists{directive-argument}\@@addtocsec{htoc}{s:toplevel-options}{0}{\@print{14.1}\quad{}\label{s:toplevel-options}Options{}}
\new@anchor@label{sec379}{s:toplevel-options}{{14.1}{X}{\label{s:toplevel-options}Options}}
\@deflabeltype{s:toplevel-options}{section}
\@@addtocsec{htoc}{s:toplevel-directives}{0}{\@print{14.2}\quad{}\label{s:toplevel-directives}Toplevel directives{}}
\new@anchor@label{sec380}{s:toplevel-directives}{{14.2}{X}{\label{s:toplevel-directives}Toplevel directives}}
\@deflabeltype{s:toplevel-directives}{section}
\@@addtocsec{htoc}{s:toplevel-modules}{0}{\@print{14.3}\quad{}\label{s:toplevel-modules}The toplevel and the module system{}}
\new@anchor@label{sec381}{s:toplevel-modules}{{14.3}{X}{\label{s:toplevel-modules}The toplevel and the module system}}
\@deflabeltype{s:toplevel-modules}{section}
\@@addtocsec{htoc}{s:toplevel-common-errors}{0}{\@print{14.4}\quad{}\label{s:toplevel-common-errors}Common errors{}}
\new@anchor@label{sec382}{s:toplevel-common-errors}{{14.4}{X}{\label{s:toplevel-common-errors}Common errors}}
\@deflabeltype{s:toplevel-common-errors}{section}
\@@addtocsec{htoc}{s:custom-toplevel}{0}{\@print{14.5}\quad{}\label{s:custom-toplevel}Building custom toplevel systems: \texttt{ocamlmktop}{}}
\new@anchor@label{sec383}{s:custom-toplevel}{{14.5}{X}{\label{s:custom-toplevel}Building custom toplevel systems: \texttt{ocamlmktop}}}
\@deflabeltype{s:custom-toplevel}{section}
\@@addtocsec{htoc}{ss:ocamlmktop-options}{1}{\@print{14.5.1}\quad{}\label{ss:ocamlmktop-options}Options{}}
\new@anchor@label{sec384}{ss:ocamlmktop-options}{{14.5.1}{X}{\label{ss:ocamlmktop-options}Options}}
\@deflabeltype{ss:ocamlmktop-options}{subsection}
\@@addtocsec{htoc}{s:ocamlnat}{0}{\@print{14.6}\quad{}\label{s:ocamlnat}The native toplevel: \texttt{ocamlnat}\ (experimental){}}
\new@anchor@label{sec385}{s:ocamlnat}{{14.6}{X}{\label{s:ocamlnat}The native toplevel: \texttt{ocamlnat}\ (experimental)}}
\@deflabeltype{s:ocamlnat}{section}
\@@addtocsec{htoc}{sec386}{-1}{\@print{Chapter 15}\quad{}The runtime system (ocamlrun){}}
\newlabel{c:runtime}{{15}{X}{The runtime system (ocamlrun)}}
\@deflabeltype{c:runtime}{chapter}
\@@addtocsec{htoc}{s:ocamlrun-overview}{0}{\@print{15.1}\quad{}\label{s:ocamlrun-overview}Overview{}}
\new@anchor@label{sec387}{s:ocamlrun-overview}{{15.1}{X}{\label{s:ocamlrun-overview}Overview}}
\@deflabeltype{s:ocamlrun-overview}{section}
\@@addtocsec{htoc}{s:ocamlrun-options}{0}{\@print{15.2}\quad{}\label{s:ocamlrun-options}Options{}}
\new@anchor@label{sec388}{s:ocamlrun-options}{{15.2}{X}{\label{s:ocamlrun-options}Options}}
\@deflabeltype{s:ocamlrun-options}{section}
\@@addtocsec{htoc}{s:ocamlrun-dllpath}{0}{\@print{15.3}\quad{}\label{s:ocamlrun-dllpath}Dynamic loading of shared libraries{}}
\new@anchor@label{sec389}{s:ocamlrun-dllpath}{{15.3}{X}{\label{s:ocamlrun-dllpath}Dynamic loading of shared libraries}}
\@deflabeltype{s:ocamlrun-dllpath}{section}
\@@addtocsec{htoc}{s:ocamlrun-common-errors}{0}{\@print{15.4}\quad{}\label{s:ocamlrun-common-errors}Common errors{}}
\new@anchor@label{sec390}{s:ocamlrun-common-errors}{{15.4}{X}{\label{s:ocamlrun-common-errors}Common errors}}
\@deflabeltype{s:ocamlrun-common-errors}{section}
\@@addtocsec{htoc}{sec391}{-1}{\@print{Chapter 16}\quad{}Native-code compilation (ocamlopt){}}
\newlabel{c:nativecomp}{{16}{X}{Native-code compilation (ocamlopt)}}
\@deflabeltype{c:nativecomp}{chapter}
\@@addtocsec{htoc}{s:native-overview}{0}{\@print{16.1}\quad{}\label{s:native-overview}Overview of the compiler{}}
\new@anchor@label{sec392}{s:native-overview}{{16.1}{X}{\label{s:native-overview}Overview of the compiler}}
\@deflabeltype{s:native-overview}{section}
\@@addtocsec{htoc}{s:native-options}{0}{\@print{16.2}\quad{}\label{s:native-options}Options{}}
\new@anchor@label{sec393}{s:native-options}{{16.2}{X}{\label{s:native-options}Options}}
\@deflabeltype{s:native-options}{section}
\@@addtocsec{htoc}{s:native-common-errors}{0}{\@print{16.3}\quad{}\label{s:native-common-errors}Common errors{}}
\new@anchor@label{sec396}{s:native-common-errors}{{16.3}{X}{\label{s:native-common-errors}Common errors}}
\@deflabeltype{s:native-common-errors}{section}
\@@addtocsec{htoc}{s:native:running-executable}{0}{\@print{16.4}\quad{}\label{s:native:running-executable}Running executables produced by ocamlopt{}}
\new@anchor@label{sec397}{s:native:running-executable}{{16.4}{X}{\label{s:native:running-executable}Running executables produced by ocamlopt}}
\@deflabeltype{s:native:running-executable}{section}
\@@addtocsec{htoc}{s:compat-native-bytecode}{0}{\@print{16.5}\quad{}\label{s:compat-native-bytecode}Compatibility with the bytecode compiler{}}
\new@anchor@label{sec398}{s:compat-native-bytecode}{{16.5}{X}{\label{s:compat-native-bytecode}Compatibility with the bytecode compiler}}
\@deflabeltype{s:compat-native-bytecode}{section}
\@@addtocsec{htoc}{sec399}{-1}{\@print{Chapter 17}\quad{}Lexer and parser generators (ocamllex, ocamlyacc){}}
\newlabel{c:ocamlyacc}{{17}{X}{Lexer and parser generators (ocamllex, ocamlyacc)}}
\@deflabeltype{c:ocamlyacc}{chapter}
\@@addtocsec{htoc}{s:ocamllex-overview}{0}{\@print{17.1}\quad{}\label{s:ocamllex-overview}Overview of \texttt{ocamllex}{}}
\new@anchor@label{sec400}{s:ocamllex-overview}{{17.1}{X}{\label{s:ocamllex-overview}Overview of \texttt{ocamllex}}}
\@deflabeltype{s:ocamllex-overview}{section}
\@@addtocsec{htoc}{ss:ocamllex-options}{1}{\@print{17.1.1}\quad{}\label{ss:ocamllex-options}Options{}}
\new@anchor@label{sec401}{ss:ocamllex-options}{{17.1.1}{X}{\label{ss:ocamllex-options}Options}}
\@deflabeltype{ss:ocamllex-options}{subsection}
\@@addtocsec{htoc}{s:ocamllex-syntax}{0}{\@print{17.2}\quad{}\label{s:ocamllex-syntax}Syntax of lexer definitions{}}
\new@anchor@label{sec402}{s:ocamllex-syntax}{{17.2}{X}{\label{s:ocamllex-syntax}Syntax of lexer definitions}}
\@deflabeltype{s:ocamllex-syntax}{section}
\@@addtocsec{htoc}{ss:ocamllex-header-trailer}{1}{\@print{17.2.1}\quad{}\label{ss:ocamllex-header-trailer}Header and trailer{}}
\new@anchor@label{sec403}{ss:ocamllex-header-trailer}{{17.2.1}{X}{\label{ss:ocamllex-header-trailer}Header and trailer}}
\@deflabeltype{ss:ocamllex-header-trailer}{subsection}
\@@addtocsec{htoc}{ss:ocamllex-named-regexp}{1}{\@print{17.2.2}\quad{}\label{ss:ocamllex-named-regexp}Naming regular expressions{}}
\new@anchor@label{sec404}{ss:ocamllex-named-regexp}{{17.2.2}{X}{\label{ss:ocamllex-named-regexp}Naming regular expressions}}
\@deflabeltype{ss:ocamllex-named-regexp}{subsection}
\@@addtocsec{htoc}{ss:ocamllex-entry-points}{1}{\@print{17.2.3}\quad{}\label{ss:ocamllex-entry-points}Entry points{}}
\new@anchor@label{sec405}{ss:ocamllex-entry-points}{{17.2.3}{X}{\label{ss:ocamllex-entry-points}Entry points}}
\@deflabeltype{ss:ocamllex-entry-points}{subsection}
\@@addtocsec{htoc}{ss:ocamllex-regexp}{1}{\@print{17.2.4}\quad{}\label{ss:ocamllex-regexp}Regular expressions{}}
\new@anchor@label{sec406}{ss:ocamllex-regexp}{{17.2.4}{X}{\label{ss:ocamllex-regexp}Regular expressions}}
\@deflabeltype{ss:ocamllex-regexp}{subsection}
\stx@exists{regexp}\@@addtocsec{htoc}{ss:ocamllex-actions}{1}{\@print{17.2.5}\quad{}\label{ss:ocamllex-actions}Actions{}}
\new@anchor@label{sec407}{ss:ocamllex-actions}{{17.2.5}{X}{\label{ss:ocamllex-actions}Actions}}
\@deflabeltype{ss:ocamllex-actions}{subsection}
\@@addtocsec{htoc}{ss:ocamllex-variables}{1}{\@print{17.2.6}\quad{}\label{ss:ocamllex-variables}Variables in regular expressions{}}
\new@anchor@label{sec408}{ss:ocamllex-variables}{{17.2.6}{X}{\label{ss:ocamllex-variables}Variables in regular expressions}}
\@deflabeltype{ss:ocamllex-variables}{subsection}
\@@addtocsec{htoc}{ss:refill-handlers}{1}{\@print{17.2.7}\quad{}\label{ss:refill-handlers}Refill handlers{}}
\new@anchor@label{sec409}{ss:refill-handlers}{{17.2.7}{X}{\label{ss:refill-handlers}Refill handlers}}
\@deflabeltype{ss:refill-handlers}{subsection}
\@@addtocsec{htoc}{ss:ocamllex-reserved-ident}{1}{\@print{17.2.8}\quad{}\label{ss:ocamllex-reserved-ident}Reserved identifiers{}}
\new@anchor@label{sec410}{ss:ocamllex-reserved-ident}{{17.2.8}{X}{\label{ss:ocamllex-reserved-ident}Reserved identifiers}}
\@deflabeltype{ss:ocamllex-reserved-ident}{subsection}
\@@addtocsec{htoc}{s:ocamlyacc-overview}{0}{\@print{17.3}\quad{}\label{s:ocamlyacc-overview}Overview of \texttt{ocamlyacc}{}}
\new@anchor@label{sec411}{s:ocamlyacc-overview}{{17.3}{X}{\label{s:ocamlyacc-overview}Overview of \texttt{ocamlyacc}}}
\@deflabeltype{s:ocamlyacc-overview}{section}
\@@addtocsec{htoc}{s:ocamlyacc-syntax}{0}{\@print{17.4}\quad{}\label{s:ocamlyacc-syntax}Syntax of grammar definitions{}}
\new@anchor@label{sec412}{s:ocamlyacc-syntax}{{17.4}{X}{\label{s:ocamlyacc-syntax}Syntax of grammar definitions}}
\@deflabeltype{s:ocamlyacc-syntax}{section}
\@@addtocsec{htoc}{ss:ocamlyacc-header-trailer}{1}{\@print{17.4.1}\quad{}\label{ss:ocamlyacc-header-trailer}Header and trailer{}}
\new@anchor@label{sec413}{ss:ocamlyacc-header-trailer}{{17.4.1}{X}{\label{ss:ocamlyacc-header-trailer}Header and trailer}}
\@deflabeltype{ss:ocamlyacc-header-trailer}{subsection}
\@@addtocsec{htoc}{ss:ocamlyacc-declarations}{1}{\@print{17.4.2}\quad{}\label{ss:ocamlyacc-declarations}Declarations{}}
\new@anchor@label{sec414}{ss:ocamlyacc-declarations}{{17.4.2}{X}{\label{ss:ocamlyacc-declarations}Declarations}}
\@deflabeltype{ss:ocamlyacc-declarations}{subsection}
\@@addtocsec{htoc}{ss:ocamlyacc-rules}{1}{\@print{17.4.3}\quad{}\label{ss:ocamlyacc-rules}Rules{}}
\new@anchor@label{sec415}{ss:ocamlyacc-rules}{{17.4.3}{X}{\label{ss:ocamlyacc-rules}Rules}}
\@deflabeltype{ss:ocamlyacc-rules}{subsection}
\@@addtocsec{htoc}{ss:ocamlyacc-error-handling}{1}{\@print{17.4.4}\quad{}\label{ss:ocamlyacc-error-handling}Error handling{}}
\new@anchor@label{sec416}{ss:ocamlyacc-error-handling}{{17.4.4}{X}{\label{ss:ocamlyacc-error-handling}Error handling}}
\@deflabeltype{ss:ocamlyacc-error-handling}{subsection}
\@@addtocsec{htoc}{s:ocamlyacc-options}{0}{\@print{17.5}\quad{}\label{s:ocamlyacc-options}Options{}}
\new@anchor@label{sec417}{s:ocamlyacc-options}{{17.5}{X}{\label{s:ocamlyacc-options}Options}}
\@deflabeltype{s:ocamlyacc-options}{section}
\@@addtocsec{htoc}{s:lexyacc-example}{0}{\@print{17.6}\quad{}\label{s:lexyacc-example}A complete example{}}
\new@anchor@label{sec418}{s:lexyacc-example}{{17.6}{X}{\label{s:lexyacc-example}A complete example}}
\@deflabeltype{s:lexyacc-example}{section}
\@@addtocsec{htoc}{s:lexyacc-common-errors}{0}{\@print{17.7}\quad{}\label{s:lexyacc-common-errors}Common errors{}}
\new@anchor@label{sec419}{s:lexyacc-common-errors}{{17.7}{X}{\label{s:lexyacc-common-errors}Common errors}}
\@deflabeltype{s:lexyacc-common-errors}{section}
\@@addtocsec{htoc}{sec420}{-1}{\@print{Chapter 18}\quad{}Dependency generator (ocamldep){}}
\newlabel{c:camldep}{{18}{X}{Dependency generator (ocamldep)}}
\@deflabeltype{c:camldep}{chapter}
\@@addtocsec{htoc}{s:ocamldep-options}{0}{\@print{18.1}\quad{}\label{s:ocamldep-options}Options{}}
\new@anchor@label{sec421}{s:ocamldep-options}{{18.1}{X}{\label{s:ocamldep-options}Options}}
\@deflabeltype{s:ocamldep-options}{section}
\@@addtocsec{htoc}{s:ocamldep-makefile}{0}{\@print{18.2}\quad{}\label{s:ocamldep-makefile}A typical Makefile{}}
\new@anchor@label{sec422}{s:ocamldep-makefile}{{18.2}{X}{\label{s:ocamldep-makefile}A typical Makefile}}
\@deflabeltype{s:ocamldep-makefile}{section}
\@@addtocsec{htoc}{sec423}{-1}{\@print{Chapter 19}\quad{}The documentation generator (ocamldoc){}}
\newlabel{c:ocamldoc}{{19}{X}{The documentation generator (ocamldoc)}}
\@deflabeltype{c:ocamldoc}{chapter}
\@@addtocsec{htoc}{s:ocamldoc-usage}{0}{\@print{19.1}\quad{}\label{s:ocamldoc-usage}Usage{}}
\new@anchor@label{sec424}{s:ocamldoc-usage}{{19.1}{X}{\label{s:ocamldoc-usage}Usage}}
\@deflabeltype{s:ocamldoc-usage}{section}
\@@addtocsec{htoc}{ss:ocamldoc-invocation}{1}{\@print{19.1.1}\quad{}\label{ss:ocamldoc-invocation}Invocation{}}
\new@anchor@label{sec425}{ss:ocamldoc-invocation}{{19.1.1}{X}{\label{ss:ocamldoc-invocation}Invocation}}
\@deflabeltype{ss:ocamldoc-invocation}{subsection}
\new@anchor@label{sec426}{sss:ocamldoc-output}{{19.1.1}{X}{\label{ss:ocamldoc-invocation}Invocation}}
\@deflabeltype{sss:ocamldoc-output}{subsection}
\new@anchor@label{sec427}{sss:ocamldoc-options}{{19.1.1}{X}{\label{ss:ocamldoc-invocation}Invocation}}
\@deflabeltype{sss:ocamldoc-options}{subsection}
\new@anchor@label{sec428}{sss:ocamldoc-type-checking}{{19.1.1}{X}{\label{ss:ocamldoc-invocation}Invocation}}
\@deflabeltype{sss:ocamldoc-type-checking}{subsection}
\new@anchor@label{sec429}{sss:ocamldoc-html}{{19.1.1}{X}{\label{ss:ocamldoc-invocation}Invocation}}
\@deflabeltype{sss:ocamldoc-html}{subsection}
\new@anchor@label{sec430}{sss:ocamldoc-latex}{{19.1.1}{X}{\label{ss:ocamldoc-invocation}Invocation}}
\@deflabeltype{sss:ocamldoc-latex}{subsection}
\new@anchor@label{sec431}{sss:ocamldoc-info}{{19.1.1}{X}{\label{ss:ocamldoc-invocation}Invocation}}
\@deflabeltype{sss:ocamldoc-info}{subsection}
\new@anchor@label{sec432}{sss:ocamldoc-dot}{{19.1.1}{X}{\label{ss:ocamldoc-invocation}Invocation}}
\@deflabeltype{sss:ocamldoc-dot}{subsection}
\new@anchor@label{sec433}{sss:ocamldoc-man}{{19.1.1}{X}{\label{ss:ocamldoc-invocation}Invocation}}
\@deflabeltype{sss:ocamldoc-man}{subsection}
\@@addtocsec{htoc}{ss:ocamldoc-merge}{1}{\@print{19.1.2}\quad{}\label{ss:ocamldoc-merge}Merging of module information{}}
\new@anchor@label{sec434}{ss:ocamldoc-merge}{{19.1.2}{X}{\label{ss:ocamldoc-merge}Merging of module information}}
\@deflabeltype{ss:ocamldoc-merge}{subsection}
\@@addtocsec{htoc}{ss:ocamldoc-rules}{1}{\@print{19.1.3}\quad{}\label{ss:ocamldoc-rules}Coding rules{}}
\new@anchor@label{sec435}{ss:ocamldoc-rules}{{19.1.3}{X}{\label{ss:ocamldoc-rules}Coding rules}}
\@deflabeltype{ss:ocamldoc-rules}{subsection}
\@@addtocsec{htoc}{s:ocamldoc-comments}{0}{\@print{19.2}\quad{}\label{s:ocamldoc-comments}Syntax of documentation comments{}}
\new@anchor@label{sec436}{s:ocamldoc-comments}{{19.2}{X}{\label{s:ocamldoc-comments}Syntax of documentation comments}}
\@deflabeltype{s:ocamldoc-comments}{section}
\@@addtocsec{htoc}{ss:ocamldoc-placement}{1}{\@print{19.2.1}\quad{}\label{ss:ocamldoc-placement}Placement of documentation comments{}}
\new@anchor@label{sec437}{ss:ocamldoc-placement}{{19.2.1}{X}{\label{ss:ocamldoc-placement}Placement of documentation comments}}
\@deflabeltype{ss:ocamldoc-placement}{subsection}
\new@anchor@label{sec438}{sss:ocamldoc-mli}{{19.2.1}{X}{\label{sss:ocamldoc-mli}Comments in {\machine{.mli}} files}}
\@deflabeltype{sss:ocamldoc-mli}{subsection}
\new@anchor@label{sec439}{sss:ocamldoc-comments-ml}{{19.2.1}{X}{\label{sss:ocamldoc-comments-ml}Comments in {\tt .ml} files}}
\@deflabeltype{sss:ocamldoc-comments-ml}{subsection}
\@@addtocsec{htoc}{ss:ocamldoc-stop}{1}{\@print{19.2.2}\quad{}\label{ss:ocamldoc-stop}The Stop special comment{}}
\new@anchor@label{sec440}{ss:ocamldoc-stop}{{19.2.2}{X}{\label{ss:ocamldoc-stop}The Stop special comment}}
\@deflabeltype{ss:ocamldoc-stop}{subsection}
\@@addtocsec{htoc}{ss:ocamldoc-syntax}{1}{\@print{19.2.3}\quad{}\label{ss:ocamldoc-syntax}Syntax of documentation comments{}}
\new@anchor@label{sec441}{ss:ocamldoc-syntax}{{19.2.3}{X}{\label{ss:ocamldoc-syntax}Syntax of documentation comments}}
\@deflabeltype{ss:ocamldoc-syntax}{subsection}
\@@addtocsec{htoc}{ss:ocamldoc-formatting}{1}{\@print{19.2.4}\quad{}\label{ss:ocamldoc-formatting}Text formatting{}}
\new@anchor@label{sec442}{ss:ocamldoc-formatting}{{19.2.4}{X}{\label{ss:ocamldoc-formatting}Text formatting}}
\@deflabeltype{ss:ocamldoc-formatting}{subsection}
\stx@exists{text}\stx@exists{inline-text}\stx@exists{text-element}\stx@exists{inline-text-element}\new@anchor@label{sec443}{sss:ocamldoc-list}{{19.2.4.1}{X}{\label{sss:ocamldoc-list}List formatting}}
\@deflabeltype{sss:ocamldoc-list}{subsubsection}
\stx@exists{list}\new@anchor@label{sec444}{sss:ocamldoc-crossref}{{19.2.4.2}{X}{\label{sss:ocamldoc-crossref}Cross-reference formatting}}
\@deflabeltype{sss:ocamldoc-crossref}{subsubsection}
\new@anchor@label{sec445}{sss:ocamldoc-preamble}{{19.2.4.3}{X}{\label{sss:ocamldoc-preamble}First sentence}}
\@deflabeltype{sss:ocamldoc-preamble}{subsubsection}
\new@anchor@label{sec446}{sss:ocamldoc-target-specific-syntax}{{19.2.4.4}{X}{\label{sss:ocamldoc-target-specific-syntax}Target-specific formatting}}
\@deflabeltype{sss:ocamldoc-target-specific-syntax}{subsubsection}
\new@anchor@label{sec447}{sss:ocamldoc-html-tags}{{19.2.4.5}{X}{\label{sss:ocamldoc-html-tags}Recognized HTML tags}}
\@deflabeltype{sss:ocamldoc-html-tags}{subsubsection}
\@@addtocsec{htoc}{ss:ocamldoc-tags}{1}{\@print{19.2.5}\quad{}\label{ss:ocamldoc-tags}Documentation tags (@-tags){}}
\new@anchor@label{sec448}{ss:ocamldoc-tags}{{19.2.5}{X}{\label{ss:ocamldoc-tags}Documentation tags (@-tags)}}
\@deflabeltype{ss:ocamldoc-tags}{subsection}
\new@anchor@label{sec449}{sss:ocamldoc-builtin-tags}{{19.2.5}{X}{\label{sss:ocamldoc-builtin-tags}Predefined tags}}
\@deflabeltype{sss:ocamldoc-builtin-tags}{subsection}
\new@anchor@label{sec450}{sss:ocamldoc-custom-tags}{{19.2.5}{X}{\label{sss:ocamldoc-custom-tags}Custom tags}}
\@deflabeltype{sss:ocamldoc-custom-tags}{subsection}
\@@addtocsec{htoc}{s:ocamldoc-custom-generators}{0}{\@print{19.3}\quad{}\label{s:ocamldoc-custom-generators}Custom generators{}}
\new@anchor@label{sec451}{s:ocamldoc-custom-generators}{{19.3}{X}{\label{s:ocamldoc-custom-generators}Custom generators}}
\@deflabeltype{s:ocamldoc-custom-generators}{section}
\@@addtocsec{htoc}{ss:ocamldoc-generators}{1}{\@print{19.3.1}\quad{}\label{ss:ocamldoc-generators}The generator modules{}}
\new@anchor@label{sec452}{ss:ocamldoc-generators}{{19.3.1}{X}{\label{ss:ocamldoc-generators}The generator modules}}
\@deflabeltype{ss:ocamldoc-generators}{subsection}
\@@addtocsec{htoc}{ss:ocamldoc-handling-custom-tags}{1}{\@print{19.3.2}\quad{}\label{ss:ocamldoc-handling-custom-tags}Handling custom tags{}}
\new@anchor@label{sec453}{ss:ocamldoc-handling-custom-tags}{{19.3.2}{X}{\label{ss:ocamldoc-handling-custom-tags}Handling custom tags}}
\@deflabeltype{ss:ocamldoc-handling-custom-tags}{subsection}
\new@anchor@label{sec454}{sss:ocamldoc-html-generator}{{19.3.2}{X}{\label{ss:ocamldoc-handling-custom-tags}Handling custom tags}}
\@deflabeltype{sss:ocamldoc-html-generator}{subsection}
\new@anchor@label{sec455}{sss:ocamldoc-other-generators}{{19.3.2}{X}{\label{sss:ocamldoc-other-generators}For other generators}}
\@deflabeltype{sss:ocamldoc-other-generators}{subsection}
\@@addtocsec{htoc}{s:ocamldoc-adding-flags}{0}{\@print{19.4}\quad{}\label{s:ocamldoc-adding-flags}Adding command line options{}}
\new@anchor@label{sec456}{s:ocamldoc-adding-flags}{{19.4}{X}{\label{s:ocamldoc-adding-flags}Adding command line options}}
\@deflabeltype{s:ocamldoc-adding-flags}{section}
\@@addtocsec{htoc}{ss:ocamldoc-compilation-and-usage}{1}{\@print{19.4.1}\quad{}\label{ss:ocamldoc-compilation-and-usage}Compilation and usage{}}
\new@anchor@label{sec457}{ss:ocamldoc-compilation-and-usage}{{19.4.1}{X}{\label{ss:ocamldoc-compilation-and-usage}Compilation and usage}}
\@deflabeltype{ss:ocamldoc-compilation-and-usage}{subsection}
\new@anchor@label{sec458}{sss:ocamldoc-generator-class}{{19.4.1}{X}{\label{sss:ocamldoc-generator-class}Defining a custom generator class in one file}}
\@deflabeltype{sss:ocamldoc-generator-class}{subsection}
\new@anchor@label{sec459}{sss:ocamldoc-modular-generator}{{19.4.1}{X}{\label{sss:ocamldoc-modular-generator}Defining a custom generator class in several files}}
\@deflabeltype{sss:ocamldoc-modular-generator}{subsection}
\@@addtocsec{htoc}{sec460}{-1}{\@print{Chapter 20}\quad{}The debugger (ocamldebug){}}
\newlabel{c:debugger}{{20}{X}{The debugger (ocamldebug)}}
\@deflabeltype{c:debugger}{chapter}
\@@addtocsec{htoc}{s:debugger-compilation}{0}{\@print{20.1}\quad{}\label{s:debugger-compilation}Compiling for debugging{}}
\new@anchor@label{sec461}{s:debugger-compilation}{{20.1}{X}{\label{s:debugger-compilation}Compiling for debugging}}
\@deflabeltype{s:debugger-compilation}{section}
\@@addtocsec{htoc}{s:debugger-invocation}{0}{\@print{20.2}\quad{}\label{s:debugger-invocation}Invocation{}}
\new@anchor@label{sec462}{s:debugger-invocation}{{20.2}{X}{\label{s:debugger-invocation}Invocation}}
\@deflabeltype{s:debugger-invocation}{section}
\@@addtocsec{htoc}{ss:debugger-start}{1}{\@print{20.2.1}\quad{}\label{ss:debugger-start}Starting the debugger{}}
\new@anchor@label{sec463}{ss:debugger-start}{{20.2.1}{X}{\label{ss:debugger-start}Starting the debugger}}
\@deflabeltype{ss:debugger-start}{subsection}
\@@addtocsec{htoc}{ss:debugger-init-file}{1}{\@print{20.2.2}\quad{}\label{ss:debugger-init-file}Initialization file{}}
\new@anchor@label{sec464}{ss:debugger-init-file}{{20.2.2}{X}{\label{ss:debugger-init-file}Initialization file}}
\@deflabeltype{ss:debugger-init-file}{subsection}
\@@addtocsec{htoc}{ss:debugger-exut}{1}{\@print{20.2.3}\quad{}\label{ss:debugger-exut}Exiting the debugger{}}
\new@anchor@label{sec465}{ss:debugger-exut}{{20.2.3}{X}{\label{ss:debugger-exut}Exiting the debugger}}
\@deflabeltype{ss:debugger-exut}{subsection}
\@@addtocsec{htoc}{s:debugger-commands}{0}{\@print{20.3}\quad{}\label{s:debugger-commands}Commands{}}
\new@anchor@label{sec466}{s:debugger-commands}{{20.3}{X}{\label{s:debugger-commands}Commands}}
\@deflabeltype{s:debugger-commands}{section}
\@@addtocsec{htoc}{ss:debugger-help}{1}{\@print{20.3.1}\quad{}\label{ss:debugger-help}Getting help{}}
\new@anchor@label{sec467}{ss:debugger-help}{{20.3.1}{X}{\label{ss:debugger-help}Getting help}}
\@deflabeltype{ss:debugger-help}{subsection}
\@@addtocsec{htoc}{ss:debugger-state}{1}{\@print{20.3.2}\quad{}\label{ss:debugger-state}Accessing the debugger state{}}
\new@anchor@label{sec468}{ss:debugger-state}{{20.3.2}{X}{\label{ss:debugger-state}Accessing the debugger state}}
\@deflabeltype{ss:debugger-state}{subsection}
\@@addtocsec{htoc}{s:debugger-execution}{0}{\@print{20.4}\quad{}\label{s:debugger-execution}Executing a program{}}
\new@anchor@label{sec469}{s:debugger-execution}{{20.4}{X}{\label{s:debugger-execution}Executing a program}}
\@deflabeltype{s:debugger-execution}{section}
\@@addtocsec{htoc}{ss:debugger-events}{1}{\@print{20.4.1}\quad{}\label{ss:debugger-events}Events{}}
\new@anchor@label{sec470}{ss:debugger-events}{{20.4.1}{X}{\label{ss:debugger-events}Events}}
\@deflabeltype{ss:debugger-events}{subsection}
\@@addtocsec{htoc}{ss:debugger-starting-program}{1}{\@print{20.4.2}\quad{}\label{ss:debugger-starting-program}Starting the debugged program{}}
\new@anchor@label{sec471}{ss:debugger-starting-program}{{20.4.2}{X}{\label{ss:debugger-starting-program}Starting the debugged program}}
\@deflabeltype{ss:debugger-starting-program}{subsection}
\@@addtocsec{htoc}{ss:debugger-running}{1}{\@print{20.4.3}\quad{}\label{ss:debugger-running}Running the program{}}
\new@anchor@label{sec472}{ss:debugger-running}{{20.4.3}{X}{\label{ss:debugger-running}Running the program}}
\@deflabeltype{ss:debugger-running}{subsection}
\@@addtocsec{htoc}{ss:debugger-time-travel}{1}{\@print{20.4.4}\quad{}\label{ss:debugger-time-travel}Time travel{}}
\new@anchor@label{sec473}{ss:debugger-time-travel}{{20.4.4}{X}{\label{ss:debugger-time-travel}Time travel}}
\@deflabeltype{ss:debugger-time-travel}{subsection}
\@@addtocsec{htoc}{ss:debugger-kill}{1}{\@print{20.4.5}\quad{}\label{ss:debugger-kill}Killing the program{}}
\new@anchor@label{sec474}{ss:debugger-kill}{{20.4.5}{X}{\label{ss:debugger-kill}Killing the program}}
\@deflabeltype{ss:debugger-kill}{subsection}
\@@addtocsec{htoc}{s:breakpoints}{0}{\@print{20.5}\quad{}\label{s:breakpoints}Breakpoints{}}
\new@anchor@label{sec475}{s:breakpoints}{{20.5}{X}{\label{s:breakpoints}Breakpoints}}
\@deflabeltype{s:breakpoints}{section}
\@@addtocsec{htoc}{s:debugger-callstack}{0}{\@print{20.6}\quad{}\label{s:debugger-callstack}The call stack{}}
\new@anchor@label{sec476}{s:debugger-callstack}{{20.6}{X}{\label{s:debugger-callstack}The call stack}}
\@deflabeltype{s:debugger-callstack}{section}
\@@addtocsec{htoc}{s:debugger-examining-values}{0}{\@print{20.7}\quad{}\label{s:debugger-examining-values}Examining variable values{}}
\new@anchor@label{sec477}{s:debugger-examining-values}{{20.7}{X}{\label{s:debugger-examining-values}Examining variable values}}
\@deflabeltype{s:debugger-examining-values}{section}
\stx@exists{simple-expr}\@@addtocsec{htoc}{s:debugger-control}{0}{\@print{20.8}\quad{}\label{s:debugger-control}Controlling the debugger{}}
\new@anchor@label{sec478}{s:debugger-control}{{20.8}{X}{\label{s:debugger-control}Controlling the debugger}}
\@deflabeltype{s:debugger-control}{section}
\@@addtocsec{htoc}{ss:debugger-name-and-arguments}{1}{\@print{20.8.1}\quad{}\label{ss:debugger-name-and-arguments}Setting the program name and arguments{}}
\new@anchor@label{sec479}{ss:debugger-name-and-arguments}{{20.8.1}{X}{\label{ss:debugger-name-and-arguments}Setting the program name and arguments}}
\@deflabeltype{ss:debugger-name-and-arguments}{subsection}
\@@addtocsec{htoc}{ss:debugger-loading}{1}{\@print{20.8.2}\quad{}\label{ss:debugger-loading}How programs are loaded{}}
\new@anchor@label{sec480}{ss:debugger-loading}{{20.8.2}{X}{\label{ss:debugger-loading}How programs are loaded}}
\@deflabeltype{ss:debugger-loading}{subsection}
\@@addtocsec{htoc}{ss:debugger-search-path}{1}{\@print{20.8.3}\quad{}\label{ss:debugger-search-path}Search path for files{}}
\new@anchor@label{sec481}{ss:debugger-search-path}{{20.8.3}{X}{\label{ss:debugger-search-path}Search path for files}}
\@deflabeltype{ss:debugger-search-path}{subsection}
\@@addtocsec{htoc}{ss:debugger-working-dir}{1}{\@print{20.8.4}\quad{}\label{ss:debugger-working-dir}Working directory{}}
\new@anchor@label{sec482}{ss:debugger-working-dir}{{20.8.4}{X}{\label{ss:debugger-working-dir}Working directory}}
\@deflabeltype{ss:debugger-working-dir}{subsection}
\@@addtocsec{htoc}{ss:debugger-reverse-execution}{1}{\@print{20.8.5}\quad{}\label{ss:debugger-reverse-execution}Turning reverse execution on and off{}}
\new@anchor@label{sec483}{ss:debugger-reverse-execution}{{20.8.5}{X}{\label{ss:debugger-reverse-execution}Turning reverse execution on and off}}
\@deflabeltype{ss:debugger-reverse-execution}{subsection}
\@@addtocsec{htoc}{ss:debugger-fork}{1}{\@print{20.8.6}\quad{}\label{ss:debugger-fork}Behavior of the debugger with respect to {\machine{fork}}{}}
\new@anchor@label{sec484}{ss:debugger-fork}{{20.8.6}{X}{\label{ss:debugger-fork}Behavior of the debugger with respect to {\machine{fork}}}}
\@deflabeltype{ss:debugger-fork}{subsection}
\@@addtocsec{htoc}{ss:debugger-stop-at-new-load}{1}{\@print{20.8.7}\quad{}\label{ss:debugger-stop-at-new-load}Stopping execution when new code is loaded{}}
\new@anchor@label{sec485}{ss:debugger-stop-at-new-load}{{20.8.7}{X}{\label{ss:debugger-stop-at-new-load}Stopping execution when new code is loaded}}
\@deflabeltype{ss:debugger-stop-at-new-load}{subsection}
\@@addtocsec{htoc}{ss:debugger-communication}{1}{\@print{20.8.8}\quad{}\label{ss:debugger-communication}Communication between the debugger and the program{}}
\new@anchor@label{sec486}{ss:debugger-communication}{{20.8.8}{X}{\label{ss:debugger-communication}Communication between the debugger and the program}}
\@deflabeltype{ss:debugger-communication}{subsection}
\@@addtocsec{htoc}{ss:debugger-fine-tuning}{1}{\@print{20.8.9}\quad{}\label{ss:debugger-fine-tuning}Fine-tuning the debugger{}}
\new@anchor@label{sec487}{ss:debugger-fine-tuning}{{20.8.9}{X}{\label{ss:debugger-fine-tuning}Fine-tuning the debugger}}
\@deflabeltype{ss:debugger-fine-tuning}{subsection}
\@@addtocsec{htoc}{ss:debugger-printers}{1}{\@print{20.8.10}\quad{}\label{ss:debugger-printers}User-defined printers{}}
\new@anchor@label{sec488}{ss:debugger-printers}{{20.8.10}{X}{\label{ss:debugger-printers}User-defined printers}}
\@deflabeltype{ss:debugger-printers}{subsection}
\@@addtocsec{htoc}{s:debugger-misc-cmds}{0}{\@print{20.9}\quad{}\label{s:debugger-misc-cmds}Miscellaneous commands{}}
\new@anchor@label{sec489}{s:debugger-misc-cmds}{{20.9}{X}{\label{s:debugger-misc-cmds}Miscellaneous commands}}
\@deflabeltype{s:debugger-misc-cmds}{section}
\@@addtocsec{htoc}{s:inf-debugger}{0}{\@print{20.10}\quad{}\label{s:inf-debugger}Running the debugger under Emacs{}}
\new@anchor@label{sec490}{s:inf-debugger}{{20.10}{X}{\label{s:inf-debugger}Running the debugger under Emacs}}
\@deflabeltype{s:inf-debugger}{section}
\@@addtocsec{htoc}{sec491}{-1}{\@print{Chapter 21}\quad{}Native debugging (gdb, lldb){}}
\newlabel{c:native-debugger}{{21}{X}{Native debugging (gdb, lldb)}}
\@deflabeltype{c:native-debugger}{chapter}
\@@addtocsec{htoc}{s:native-debugger-overview}{0}{\@print{21.1}\quad{}\label{s:native-debugger-overview}Overview{}}
\new@anchor@label{sec492}{s:native-debugger-overview}{{21.1}{X}{\label{s:native-debugger-overview}Overview}}
\@deflabeltype{s:native-debugger-overview}{section}
\@@addtocsec{htoc}{ss:native-debugger-dwarf}{1}{\@print{21.1.1}\quad{}\label{ss:native-debugger-dwarf}DWARF{}}
\new@anchor@label{sec493}{ss:native-debugger-dwarf}{{21.1.1}{X}{\label{ss:native-debugger-dwarf}DWARF}}
\@deflabeltype{ss:native-debugger-dwarf}{subsection}
\@@addtocsec{htoc}{ss:native-debugger-name-mangling}{1}{\@print{21.1.2}\quad{}\label{ss:native-debugger-name-mangling}Name Mangling{}}
\new@anchor@label{sec494}{ss:native-debugger-name-mangling}{{21.1.2}{X}{\label{ss:native-debugger-name-mangling}Name Mangling}}
\@deflabeltype{ss:native-debugger-name-mangling}{subsection}
\@@addtocsec{htoc}{ss:native-debugger-frame-pointers}{1}{\@print{21.1.3}\quad{}\label{ss:native-debugger-frame-pointers}Frame Pointers{}}
\new@anchor@label{sec495}{ss:native-debugger-frame-pointers}{{21.1.3}{X}{\label{ss:native-debugger-frame-pointers}Frame Pointers}}
\@deflabeltype{ss:native-debugger-frame-pointers}{subsection}
\@@addtocsec{htoc}{s:native-debugger-compilation}{0}{\@print{21.2}\quad{}\label{s:native-debugger-compilation}Compiling for Debugging{}}
\new@anchor@label{sec496}{s:native-debugger-compilation}{{21.2}{X}{\label{s:native-debugger-compilation}Compiling for Debugging}}
\@deflabeltype{s:native-debugger-compilation}{section}
\@@addtocsec{htoc}{s:native-debugger-gdb}{0}{\@print{21.3}\quad{}\label{s:native-debugger-gdb}Using GDB{}}
\new@anchor@label{sec497}{s:native-debugger-gdb}{{21.3}{X}{\label{s:native-debugger-gdb}Using GDB}}
\@deflabeltype{s:native-debugger-gdb}{section}
\@@addtocsec{htoc}{ss:native-debugger-gdb-commands}{1}{\@print{21.3.1}\quad{}\label{ss:native-debugger-gdb-commands}GDB Commands{}}
\new@anchor@label{sec498}{ss:native-debugger-gdb-commands}{{21.3.1}{X}{\label{ss:native-debugger-gdb-commands}GDB Commands}}
\@deflabeltype{ss:native-debugger-gdb-commands}{subsection}
\@@addtocsec{htoc}{s:native-debugger-lldb}{0}{\@print{21.4}\quad{}\label{s:native-debugger-lldb}Using LLDB{}}
\new@anchor@label{sec499}{s:native-debugger-lldb}{{21.4}{X}{\label{s:native-debugger-lldb}Using LLDB}}
\@deflabeltype{s:native-debugger-lldb}{section}
\@@addtocsec{htoc}{ss:native-debugger-lldb-commands}{1}{\@print{21.4.1}\quad{}\label{ss:native-debugger-lldb-commands}LLDB Commands{}}
\new@anchor@label{sec500}{ss:native-debugger-lldb-commands}{{21.4.1}{X}{\label{ss:native-debugger-lldb-commands}LLDB Commands}}
\@deflabeltype{ss:native-debugger-lldb-commands}{subsection}
\@@addtocsec{htoc}{sec501}{-1}{\@print{Chapter 22}\quad{}Profiling (ocamlprof, perf){}}
\newlabel{c:profiler}{{22}{X}{Profiling (ocamlprof, perf)}}
\@deflabeltype{c:profiler}{chapter}
\@@addtocsec{htoc}{s:ocamlprog-overview}{0}{\@print{22.1}\quad{}\label{s:ocamlprog-overview}Profiling execution counts with ocamlprof{}}
\new@anchor@label{sec502}{s:ocamlprog-overview}{{22.1}{X}{\label{s:ocamlprog-overview}Profiling execution counts with ocamlprof}}
\@deflabeltype{s:ocamlprog-overview}{section}
\@@addtocsec{htoc}{s:ocamlprof-compiling}{1}{\@print{22.1.1}\quad{}\label{s:ocamlprof-compiling}Compiling for profiling{}}
\new@anchor@label{sec503}{s:ocamlprof-compiling}{{22.1.1}{X}{\label{s:ocamlprof-compiling}Compiling for profiling}}
\@deflabeltype{s:ocamlprof-compiling}{subsection}
\new@anchor@label{sec504}{p:ocamlprof-warning}{{22.1.1}{X}{\label{p:ocamlprof-warning}Note}}
\@deflabeltype{p:ocamlprof-warning}{subsection}
\new@anchor@label{sec505}{p:ocamlprof-reserved}{{22.1.1}{X}{\label{p:ocamlprof-reserved}Note}}
\@deflabeltype{p:ocamlprof-reserved}{subsection}
\@@addtocsec{htoc}{s:ocamlprof-profiling}{1}{\@print{22.1.2}\quad{}\label{s:ocamlprof-profiling}Profiling an execution{}}
\new@anchor@label{sec507}{s:ocamlprof-profiling}{{22.1.2}{X}{\label{s:ocamlprof-profiling}Profiling an execution}}
\@deflabeltype{s:ocamlprof-profiling}{subsection}
\@@addtocsec{htoc}{s:ocamlprof-printing}{1}{\@print{22.1.3}\quad{}\label{s:ocamlprof-printing}Printing profiling information{}}
\new@anchor@label{sec508}{s:ocamlprof-printing}{{22.1.3}{X}{\label{s:ocamlprof-printing}Printing profiling information}}
\@deflabeltype{s:ocamlprof-printing}{subsection}
\@@addtocsec{htoc}{s:ocamlprof-time-profiling}{0}{\@print{22.2}\quad{}\label{s:ocamlprof-time-profiling}Time profiling with Linux perf{}}
\new@anchor@label{sec509}{s:ocamlprof-time-profiling}{{22.2}{X}{\label{s:ocamlprof-time-profiling}Time profiling with Linux perf}}
\@deflabeltype{s:ocamlprof-time-profiling}{section}
\@@addtocsec{htoc}{s:ocamlprof-time-profiling-background}{1}{\@print{22.2.1}\quad{}\label{s:ocamlprof-time-profiling-background}Background{}}
\new@anchor@label{sec510}{s:ocamlprof-time-profiling-background}{{22.2.1}{X}{\label{s:ocamlprof-time-profiling-background}Background}}
\@deflabeltype{s:ocamlprof-time-profiling-background}{subsection}
\@@addtocsec{htoc}{s:ocamlprof-compiling-perf}{1}{\@print{22.2.2}\quad{}\label{s:ocamlprof-compiling-perf}Compiling for Profiling{}}
\new@anchor@label{sec511}{s:ocamlprof-compiling-perf}{{22.2.2}{X}{\label{s:ocamlprof-compiling-perf}Compiling for Profiling}}
\@deflabeltype{s:ocamlprof-compiling-perf}{subsection}
\@@addtocsec{htoc}{s:ocamlprof-profiling-perf}{1}{\@print{22.2.3}\quad{}\label{s:ocamlprof-profiling-perf}Profiling an Execution{}}
\new@anchor@label{sec512}{s:ocamlprof-profiling-perf}{{22.2.3}{X}{\label{s:ocamlprof-profiling-perf}Profiling an Execution}}
\@deflabeltype{s:ocamlprof-profiling-perf}{subsection}
\@@addtocsec{htoc}{s:ocamlprof-printing-perf}{1}{\@print{22.2.4}\quad{}\label{s:ocamlprof-printing-perf}Displaying profiling information{}}
\new@anchor@label{sec513}{s:ocamlprof-printing-perf}{{22.2.4}{X}{\label{s:ocamlprof-printing-perf}Displaying profiling information}}
\@deflabeltype{s:ocamlprof-printing-perf}{subsection}
\@@addtocsec{htoc}{s:ocamlperf-conclusion}{1}{\@print{22.2.5}\quad{}\label{s:ocamlperf-conclusion}Conclusion{}}
\new@anchor@label{sec514}{s:ocamlperf-conclusion}{{22.2.5}{X}{\label{s:ocamlperf-conclusion}Conclusion}}
\@deflabeltype{s:ocamlperf-conclusion}{subsection}
\@@addtocsec{htoc}{s:ocamlprof-instruments}{0}{\@print{22.3}\quad{}\label{s:ocamlprof-instruments}Time profiling with macOS Instruments{}}
\new@anchor@label{sec515}{s:ocamlprof-instruments}{{22.3}{X}{\label{s:ocamlprof-instruments}Time profiling with macOS Instruments}}
\@deflabeltype{s:ocamlprof-instruments}{section}
\new@anchor@label{sec516}{p:ocamlprof-instruments}{{22.3}{X}{\label{p:ocamlprof-instruments}Note}}
\@deflabeltype{p:ocamlprof-instruments}{section}
\@@addtocsec{htoc}{s:ocamlprof-glossary}{0}{\@print{22.4}\quad{}\label{s:ocamlprof-glossary}Glossary{}}
\new@anchor@label{sec517}{s:ocamlprof-glossary}{{22.4}{X}{\label{s:ocamlprof-glossary}Glossary}}
\@deflabeltype{s:ocamlprof-glossary}{section}
\@@addtocsec{htoc}{c:intf-c}{-1}{\@print{Chapter 23}\quad{}Interfacing\label{c:intf-c} C with OCaml{}}
\new@anchor@label{sec518}{c:intf-c}{{23}{X}{Interfacing\label{c:intf-c} C with OCaml}}
\@deflabeltype{c:intf-c}{chapter}
\@@addtocsec{htoc}{s:c-overview}{0}{\@print{23.1}\quad{}\label{s:c-overview}Overview and compilation information{}}
\new@anchor@label{sec519}{s:c-overview}{{23.1}{X}{\label{s:c-overview}Overview and compilation information}}
\@deflabeltype{s:c-overview}{section}
\@@addtocsec{htoc}{ss:c-prim-decl}{1}{\@print{23.1.1}\quad{}\label{ss:c-prim-decl}Declaring primitives{}}
\new@anchor@label{sec520}{ss:c-prim-decl}{{23.1.1}{X}{\label{ss:c-prim-decl}Declaring primitives}}
\@deflabeltype{ss:c-prim-decl}{subsection}
\stx@exists{external-declaration}\@@addtocsec{htoc}{ss:c-prim-impl}{1}{\@print{23.1.2}\quad{}\label{ss:c-prim-impl}Implementing primitives{}}
\new@anchor@label{sec521}{ss:c-prim-impl}{{23.1.2}{X}{\label{ss:c-prim-impl}Implementing primitives}}
\@deflabeltype{ss:c-prim-impl}{subsection}
\@@addtocsec{htoc}{ss:staticlink-c-code}{1}{\@print{23.1.3}\quad{}\label{ss:staticlink-c-code}Statically linking C code with OCaml code{}}
\new@anchor@label{sec522}{ss:staticlink-c-code}{{23.1.3}{X}{\label{ss:staticlink-c-code}Statically linking C code with OCaml code}}
\@deflabeltype{ss:staticlink-c-code}{subsection}
\@@addtocsec{htoc}{ss:dynlink-c-code}{1}{\@print{23.1.4}\quad{}\label{ss:dynlink-c-code}Dynamically linking C code with OCaml code{}}
\new@anchor@label{sec523}{ss:dynlink-c-code}{{23.1.4}{X}{\label{ss:dynlink-c-code}Dynamically linking C code with OCaml code}}
\@deflabeltype{ss:dynlink-c-code}{subsection}
\@@addtocsec{htoc}{ss:c-static-vs-dynamic}{1}{\@print{23.1.5}\quad{}\label{ss:c-static-vs-dynamic}Choosing between static linking and dynamic linking{}}
\new@anchor@label{sec524}{ss:c-static-vs-dynamic}{{23.1.5}{X}{\label{ss:c-static-vs-dynamic}Choosing between static linking and dynamic linking}}
\@deflabeltype{ss:c-static-vs-dynamic}{subsection}
\@@addtocsec{htoc}{ss:custom-runtime}{1}{\@print{23.1.6}\quad{}\label{ss:custom-runtime}Building standalone custom runtime systems{}}
\new@anchor@label{sec525}{ss:custom-runtime}{{23.1.6}{X}{\label{ss:custom-runtime}Building standalone custom runtime systems}}
\@deflabeltype{ss:custom-runtime}{subsection}
\@@addtocsec{htoc}{s:c-value}{0}{\@print{23.2}\quad{}\label{s:c-value}The \texttt{value} type{}}
\new@anchor@label{sec526}{s:c-value}{{23.2}{X}{\label{s:c-value}The \texttt{value} type}}
\@deflabeltype{s:c-value}{section}
\@@addtocsec{htoc}{ss:c-int}{1}{\@print{23.2.1}\quad{}\label{ss:c-int}Integer values{}}
\new@anchor@label{sec527}{ss:c-int}{{23.2.1}{X}{\label{ss:c-int}Integer values}}
\@deflabeltype{ss:c-int}{subsection}
\@@addtocsec{htoc}{ss:c-blocks}{1}{\@print{23.2.2}\quad{}\label{ss:c-blocks}Blocks{}}
\new@anchor@label{sec528}{ss:c-blocks}{{23.2.2}{X}{\label{ss:c-blocks}Blocks}}
\@deflabeltype{ss:c-blocks}{subsection}
\@@addtocsec{htoc}{ss:c-outside-head}{1}{\@print{23.2.3}\quad{}\label{ss:c-outside-head}Pointers outside the heap{}}
\new@anchor@label{sec529}{ss:c-outside-head}{{23.2.3}{X}{\label{ss:c-outside-head}Pointers outside the heap}}
\@deflabeltype{ss:c-outside-head}{subsection}
\@@addtocsec{htoc}{s:c-ocaml-datatype-repr}{0}{\@print{23.3}\quad{}\label{s:c-ocaml-datatype-repr}Representation of OCaml data types{}}
\new@anchor@label{sec530}{s:c-ocaml-datatype-repr}{{23.3}{X}{\label{s:c-ocaml-datatype-repr}Representation of OCaml data types}}
\@deflabeltype{s:c-ocaml-datatype-repr}{section}
\@@addtocsec{htoc}{ss:c-atomic}{1}{\@print{23.3.1}\quad{}\label{ss:c-atomic}Atomic types{}}
\new@anchor@label{sec531}{ss:c-atomic}{{23.3.1}{X}{\label{ss:c-atomic}Atomic types}}
\@deflabeltype{ss:c-atomic}{subsection}
\@@addtocsec{htoc}{ss:c-tuples-and-records}{1}{\@print{23.3.2}\quad{}\label{ss:c-tuples-and-records}Tuples and records{}}
\new@anchor@label{sec532}{ss:c-tuples-and-records}{{23.3.2}{X}{\label{ss:c-tuples-and-records}Tuples and records}}
\@deflabeltype{ss:c-tuples-and-records}{subsection}
\@@addtocsec{htoc}{ss:c-arrays}{1}{\@print{23.3.3}\quad{}\label{ss:c-arrays}Arrays{}}
\new@anchor@label{sec533}{ss:c-arrays}{{23.3.3}{X}{\label{ss:c-arrays}Arrays}}
\@deflabeltype{ss:c-arrays}{subsection}
\@@addtocsec{htoc}{ss:c-concrete-datatypes}{1}{\@print{23.3.4}\quad{}\label{ss:c-concrete-datatypes}Concrete data types{}}
\new@anchor@label{sec534}{ss:c-concrete-datatypes}{{23.3.4}{X}{\label{ss:c-concrete-datatypes}Concrete data types}}
\@deflabeltype{ss:c-concrete-datatypes}{subsection}
\@@addtocsec{htoc}{ss:c-objects}{1}{\@print{23.3.5}\quad{}\label{ss:c-objects}Objects{}}
\new@anchor@label{sec535}{ss:c-objects}{{23.3.5}{X}{\label{ss:c-objects}Objects}}
\@deflabeltype{ss:c-objects}{subsection}
\@@addtocsec{htoc}{ss:c-polyvar}{1}{\@print{23.3.6}\quad{}\label{ss:c-polyvar}Polymorphic variants{}}
\new@anchor@label{sec536}{ss:c-polyvar}{{23.3.6}{X}{\label{ss:c-polyvar}Polymorphic variants}}
\@deflabeltype{ss:c-polyvar}{subsection}
\@@addtocsec{htoc}{s:c-ops-on-values}{0}{\@print{23.4}\quad{}\label{s:c-ops-on-values}Operations on values{}}
\new@anchor@label{sec537}{s:c-ops-on-values}{{23.4}{X}{\label{s:c-ops-on-values}Operations on values}}
\@deflabeltype{s:c-ops-on-values}{section}
\@@addtocsec{htoc}{ss:c-kind-tests}{1}{\@print{23.4.1}\quad{}\label{ss:c-kind-tests}Kind tests{}}
\new@anchor@label{sec538}{ss:c-kind-tests}{{23.4.1}{X}{\label{ss:c-kind-tests}Kind tests}}
\@deflabeltype{ss:c-kind-tests}{subsection}
\@@addtocsec{htoc}{ss:c-int-ops}{1}{\@print{23.4.2}\quad{}\label{ss:c-int-ops}Operations on integers{}}
\new@anchor@label{sec539}{ss:c-int-ops}{{23.4.2}{X}{\label{ss:c-int-ops}Operations on integers}}
\@deflabeltype{ss:c-int-ops}{subsection}
\@@addtocsec{htoc}{ss:c-block-access}{1}{\@print{23.4.3}\quad{}\label{ss:c-block-access}Accessing blocks{}}
\new@anchor@label{sec540}{ss:c-block-access}{{23.4.3}{X}{\label{ss:c-block-access}Accessing blocks}}
\@deflabeltype{ss:c-block-access}{subsection}
\@@addtocsec{htoc}{ss:c-block-allocation}{1}{\@print{23.4.4}\quad{}\label{ss:c-block-allocation}Allocating blocks{}}
\new@anchor@label{sec541}{ss:c-block-allocation}{{23.4.4}{X}{\label{ss:c-block-allocation}Allocating blocks}}
\@deflabeltype{ss:c-block-allocation}{subsection}
\new@anchor@label{sec542}{sss:c-simple-allocation}{{23.4.4}{X}{\label{sss:c-simple-allocation}Simple interface}}
\@deflabeltype{sss:c-simple-allocation}{subsection}
\new@anchor@label{sec543}{sss:c-low-level-alloc}{{23.4.4}{X}{\label{sss:c-low-level-alloc}Low-level interface}}
\@deflabeltype{sss:c-low-level-alloc}{subsection}
\@@addtocsec{htoc}{ss:c-exceptions}{1}{\@print{23.4.5}\quad{}\label{ss:c-exceptions}Raising exceptions{}}
\new@anchor@label{sec544}{ss:c-exceptions}{{23.4.5}{X}{\label{ss:c-exceptions}Raising exceptions}}
\@deflabeltype{ss:c-exceptions}{subsection}
\@@addtocsec{htoc}{s:c-gc-harmony}{0}{\@print{23.5}\quad{}\label{s:c-gc-harmony}Living in harmony with the garbage collector{}}
\new@anchor@label{sec545}{s:c-gc-harmony}{{23.5}{X}{\label{s:c-gc-harmony}Living in harmony with the garbage collector}}
\@deflabeltype{s:c-gc-harmony}{section}
\@@addtocsec{htoc}{ss:c-simple-gc-harmony}{1}{\@print{23.5.1}\quad{}\label{ss:c-simple-gc-harmony}Simple interface{}}
\new@anchor@label{sec546}{ss:c-simple-gc-harmony}{{23.5.1}{X}{\label{ss:c-simple-gc-harmony}Simple interface}}
\@deflabeltype{ss:c-simple-gc-harmony}{subsection}
\@@addtocsec{htoc}{ss:c-low-level-gc-harmony}{1}{\@print{23.5.2}\quad{}\label{ss:c-low-level-gc-harmony}Low-level interface{}}
\new@anchor@label{sec554}{ss:c-low-level-gc-harmony}{{23.5.2}{X}{\label{ss:c-low-level-gc-harmony}Low-level interface}}
\@deflabeltype{ss:c-low-level-gc-harmony}{subsection}
\@@addtocsec{htoc}{ss:c-process-pending-actions}{1}{\@print{23.5.3}\quad{}\label{ss:c-process-pending-actions}Pending actions and asynchronous exceptions{}}
\new@anchor@label{sec555}{ss:c-process-pending-actions}{{23.5.3}{X}{\label{ss:c-process-pending-actions}Pending actions and asynchronous exceptions}}
\@deflabeltype{ss:c-process-pending-actions}{subsection}
\@@addtocsec{htoc}{s:c-intf-example}{0}{\@print{23.6}\quad{}\label{s:c-intf-example}A complete example{}}
\new@anchor@label{sec556}{s:c-intf-example}{{23.6}{X}{\label{s:c-intf-example}A complete example}}
\@deflabeltype{s:c-intf-example}{section}
\@@addtocsec{htoc}{s:c-callback}{0}{\@print{23.7}\quad{}\label{s:c-callback}Advanced topic: callbacks from C to OCaml{}}
\new@anchor@label{sec557}{s:c-callback}{{23.7}{X}{\label{s:c-callback}Advanced topic: callbacks from C to OCaml}}
\@deflabeltype{s:c-callback}{section}
\@@addtocsec{htoc}{ss:c-callbacks}{1}{\@print{23.7.1}\quad{}\label{ss:c-callbacks}Applying OCaml closures from C{}}
\new@anchor@label{sec558}{ss:c-callbacks}{{23.7.1}{X}{\label{ss:c-callbacks}Applying OCaml closures from C}}
\@deflabeltype{ss:c-callbacks}{subsection}
\@@addtocsec{htoc}{ss:c-result}{1}{\@print{23.7.2}\quad{}\label{ss:c-result}{\machine{caml{\char95}result}}: resource cleanup on OCaml exceptions{}}
\new@anchor@label{sec559}{ss:c-result}{{23.7.2}{X}{\label{ss:c-result}{\machine{caml{\char95}result}}: resource cleanup on OCaml exceptions}}
\@deflabeltype{ss:c-result}{subsection}
\@@addtocsec{htoc}{ss:c-closures}{1}{\@print{23.7.3}\quad{}\label{ss:c-closures}Obtaining or registering OCaml closures for use in C functions{}}
\new@anchor@label{sec561}{ss:c-closures}{{23.7.3}{X}{\label{ss:c-closures}Obtaining or registering OCaml closures for use in C functions}}
\@deflabeltype{ss:c-closures}{subsection}
\@@addtocsec{htoc}{ss:c-register-exn}{1}{\@print{23.7.4}\quad{}\label{ss:c-register-exn}Registering OCaml exceptions for use in C functions{}}
\new@anchor@label{sec562}{ss:c-register-exn}{{23.7.4}{X}{\label{ss:c-register-exn}Registering OCaml exceptions for use in C functions}}
\@deflabeltype{ss:c-register-exn}{subsection}
\@@addtocsec{htoc}{ss:main-c}{1}{\@print{23.7.5}\quad{}\label{ss:main-c}Main program in C{}}
\new@anchor@label{sec563}{ss:main-c}{{23.7.5}{X}{\label{ss:main-c}Main program in C}}
\@deflabeltype{ss:main-c}{subsection}
\@@addtocsec{htoc}{ss:c-embedded-code}{1}{\@print{23.7.6}\quad{}\label{ss:c-embedded-code}Embedding the OCaml code in the C code{}}
\new@anchor@label{sec564}{ss:c-embedded-code}{{23.7.6}{X}{\label{ss:c-embedded-code}Embedding the OCaml code in the C code}}
\@deflabeltype{ss:c-embedded-code}{subsection}
\@@addtocsec{htoc}{s:c-advexample}{0}{\@print{23.8}\quad{}\label{s:c-advexample}Advanced example with callbacks{}}
\new@anchor@label{sec569}{s:c-advexample}{{23.8}{X}{\label{s:c-advexample}Advanced example with callbacks}}
\@deflabeltype{s:c-advexample}{section}
\@@addtocsec{htoc}{s:c-custom}{0}{\@print{23.9}\quad{}\label{s:c-custom}Advanced topic: custom blocks{}}
\new@anchor@label{sec570}{s:c-custom}{{23.9}{X}{\label{s:c-custom}Advanced topic: custom blocks}}
\@deflabeltype{s:c-custom}{section}
\@@addtocsec{htoc}{ss:c-custom-ops}{1}{\@print{23.9.1}\quad{}\label{ss:c-custom-ops}The {\machine{struct\ custom{\char95}operations}}{}}
\new@anchor@label{sec571}{ss:c-custom-ops}{{23.9.1}{X}{\label{ss:c-custom-ops}The {\machine{struct\ custom{\char95}operations}}}}
\@deflabeltype{ss:c-custom-ops}{subsection}
\@@addtocsec{htoc}{ss:c-custom-alloc}{1}{\@print{23.9.2}\quad{}\label{ss:c-custom-alloc}Allocating custom blocks{}}
\new@anchor@label{sec572}{ss:c-custom-alloc}{{23.9.2}{X}{\label{ss:c-custom-alloc}Allocating custom blocks}}
\@deflabeltype{ss:c-custom-alloc}{subsection}
\@@addtocsec{htoc}{ss:c-custom-access}{1}{\@print{23.9.3}\quad{}\label{ss:c-custom-access}Accessing custom blocks{}}
\new@anchor@label{sec573}{ss:c-custom-access}{{23.9.3}{X}{\label{ss:c-custom-access}Accessing custom blocks}}
\@deflabeltype{ss:c-custom-access}{subsection}
\@@addtocsec{htoc}{ss:c-custom-serialization}{1}{\@print{23.9.4}\quad{}\label{ss:c-custom-serialization}Writing custom serialization and deserialization functions{}}
\new@anchor@label{sec574}{ss:c-custom-serialization}{{23.9.4}{X}{\label{ss:c-custom-serialization}Writing custom serialization and deserialization functions}}
\@deflabeltype{ss:c-custom-serialization}{subsection}
\@@addtocsec{htoc}{ss:c-custom-idents}{1}{\@print{23.9.5}\quad{}\label{ss:c-custom-idents}Choosing identifiers{}}
\new@anchor@label{sec575}{ss:c-custom-idents}{{23.9.5}{X}{\label{ss:c-custom-idents}Choosing identifiers}}
\@deflabeltype{ss:c-custom-idents}{subsection}
\@@addtocsec{htoc}{ss:c-finalized}{1}{\@print{23.9.6}\quad{}\label{ss:c-finalized}Finalized blocks{}}
\new@anchor@label{sec576}{ss:c-finalized}{{23.9.6}{X}{\label{ss:c-finalized}Finalized blocks}}
\@deflabeltype{ss:c-finalized}{subsection}
\@@addtocsec{htoc}{s:C-Bigarrays}{0}{\@print{23.10}\quad{}\label{s:C-Bigarrays}Advanced topic: Bigarrays and the OCaml-C interface{}}
\new@anchor@label{sec577}{s:C-Bigarrays}{{23.10}{X}{\label{s:C-Bigarrays}Advanced topic: Bigarrays and the OCaml-C interface}}
\@deflabeltype{s:C-Bigarrays}{section}
\@@addtocsec{htoc}{ss:C-Bigarrays-include}{1}{\@print{23.10.1}\quad{}\label{ss:C-Bigarrays-include}Include file{}}
\new@anchor@label{sec578}{ss:C-Bigarrays-include}{{23.10.1}{X}{\label{ss:C-Bigarrays-include}Include file}}
\@deflabeltype{ss:C-Bigarrays-include}{subsection}
\@@addtocsec{htoc}{ss:C-Bigarrays-access}{1}{\@print{23.10.2}\quad{}\label{ss:C-Bigarrays-access}Accessing an OCaml bigarray from C or Fortran{}}
\new@anchor@label{sec579}{ss:C-Bigarrays-access}{{23.10.2}{X}{\label{ss:C-Bigarrays-access}Accessing an OCaml bigarray from C or Fortran}}
\@deflabeltype{ss:C-Bigarrays-access}{subsection}
\@@addtocsec{htoc}{ss:C-Bigarrays-wrap}{1}{\@print{23.10.3}\quad{}\label{ss:C-Bigarrays-wrap}Wrapping a C or Fortran array as an OCaml Bigarray{}}
\new@anchor@label{sec581}{ss:C-Bigarrays-wrap}{{23.10.3}{X}{\label{ss:C-Bigarrays-wrap}Wrapping a C or Fortran array as an OCaml Bigarray}}
\@deflabeltype{ss:C-Bigarrays-wrap}{subsection}
\@@addtocsec{htoc}{s:C-cheaper-call}{0}{\@print{23.11}\quad{}\label{s:C-cheaper-call}Advanced topic: cheaper C call{}}
\new@anchor@label{sec582}{s:C-cheaper-call}{{23.11}{X}{\label{s:C-cheaper-call}Advanced topic: cheaper C call}}
\@deflabeltype{s:C-cheaper-call}{section}
\@@addtocsec{htoc}{ss:c-unboxed}{1}{\@print{23.11.1}\quad{}\label{ss:c-unboxed}Passing unboxed values{}}
\new@anchor@label{sec583}{ss:c-unboxed}{{23.11.1}{X}{\label{ss:c-unboxed}Passing unboxed values}}
\@deflabeltype{ss:c-unboxed}{subsection}
\@@addtocsec{htoc}{ss:c-direct-call}{1}{\@print{23.11.2}\quad{}\label{ss:c-direct-call}Direct C call{}}
\new@anchor@label{sec584}{ss:c-direct-call}{{23.11.2}{X}{\label{ss:c-direct-call}Direct C call}}
\@deflabeltype{ss:c-direct-call}{subsection}
\@@addtocsec{htoc}{ss:c-direct-call-example}{1}{\@print{23.11.3}\quad{}\label{ss:c-direct-call-example}Example: calling C library functions without indirection{}}
\new@anchor@label{sec585}{ss:c-direct-call-example}{{23.11.3}{X}{\label{ss:c-direct-call-example}Example: calling C library functions without indirection}}
\@deflabeltype{ss:c-direct-call-example}{subsection}
\@@addtocsec{htoc}{s:C-multithreading}{0}{\@print{23.12}\quad{}\label{s:C-multithreading}Advanced topic: multithreading{}}
\new@anchor@label{sec586}{s:C-multithreading}{{23.12}{X}{\label{s:C-multithreading}Advanced topic: multithreading}}
\@deflabeltype{s:C-multithreading}{section}
\@@addtocsec{htoc}{ss:c-thread-register}{1}{\@print{23.12.1}\quad{}\label{ss:c-thread-register}Registering threads created from C{}}
\new@anchor@label{sec587}{ss:c-thread-register}{{23.12.1}{X}{\label{ss:c-thread-register}Registering threads created from C}}
\@deflabeltype{ss:c-thread-register}{subsection}
\@@addtocsec{htoc}{ss:parallel-execution-long-running-c-code}{1}{\@print{23.12.2}\quad{}\label{ss:parallel-execution-long-running-c-code}Parallel execution of long-running C code with systhreads{}}
\new@anchor@label{sec588}{ss:parallel-execution-long-running-c-code}{{23.12.2}{X}{\label{ss:parallel-execution-long-running-c-code}Parallel execution of long-running C code with systhreads}}
\@deflabeltype{ss:parallel-execution-long-running-c-code}{subsection}
\@@addtocsec{htoc}{s:interfacing-windows-unicode-apis}{0}{\@print{23.13}\quad{}\label{s:interfacing-windows-unicode-apis}Advanced topic: interfacing with Windows Unicode APIs{}}
\new@anchor@label{sec589}{s:interfacing-windows-unicode-apis}{{23.13}{X}{\label{s:interfacing-windows-unicode-apis}Advanced topic: interfacing with Windows Unicode APIs}}
\@deflabeltype{s:interfacing-windows-unicode-apis}{section}
\@@addtocsec{htoc}{s:ocamlmklib}{0}{\@print{23.14}\quad{}\label{s:ocamlmklib}Building mixed C/OCaml libraries: \texttt{ocamlmklib}{}}
\new@anchor@label{sec591}{s:ocamlmklib}{{23.14}{X}{\label{s:ocamlmklib}Building mixed C/OCaml libraries: \texttt{ocamlmklib}}}
\@deflabeltype{s:ocamlmklib}{section}
\@@addtocsec{htoc}{s:c-internal-guidelines}{0}{\@print{23.15}\quad{}\label{s:c-internal-guidelines}Cautionary words: the internal runtime API{}}
\new@anchor@label{sec593}{s:c-internal-guidelines}{{23.15}{X}{\label{s:c-internal-guidelines}Cautionary words: the internal runtime API}}
\@deflabeltype{s:c-internal-guidelines}{section}
\@@addtocsec{htoc}{ss:c-internals}{1}{\@print{23.15.1}\quad{}\label{ss:c-internals}Internal variables and CAML_INTERNALS{}}
\new@anchor@label{sec595}{ss:c-internals}{{23.15.1}{X}{\label{ss:c-internals}Internal variables and CAML_INTERNALS}}
\@deflabeltype{ss:c-internals}{subsection}
\@@addtocsec{htoc}{ss:c-internal-macros}{1}{\@print{23.15.2}\quad{}\label{ss:c-internal-macros}OCaml version macros{}}
\new@anchor@label{sec596}{ss:c-internal-macros}{{23.15.2}{X}{\label{ss:c-internal-macros}OCaml version macros}}
\@deflabeltype{ss:c-internal-macros}{subsection}
\@@addtocsec{htoc}{sec597}{-1}{\@print{Chapter 24}\quad{}Optimisation with Flambda{}}
\@@addtocsec{htoc}{s:flambda-overview}{0}{\@print{24.1}\quad{}\label{s:flambda-overview}Overview{}}
\new@anchor@label{sec598}{s:flambda-overview}{{24.1}{X}{\label{s:flambda-overview}Overview}}
\@deflabeltype{s:flambda-overview}{section}
\@@addtocsec{htoc}{s:flambda-cli}{0}{\@print{24.2}\quad{}\label{s:flambda-cli}Command-line flags{}}
\new@anchor@label{sec599}{s:flambda-cli}{{24.2}{X}{\label{s:flambda-cli}Command-line flags}}
\@deflabeltype{s:flambda-cli}{section}
\@@addtocsec{htoc}{ss:flambda-rounds}{1}{\@print{24.2.1}\quad{}\label{ss:flambda-rounds}Specification of optimisation parameters by round{}}
\new@anchor@label{sec601}{ss:flambda-rounds}{{24.2.1}{X}{\label{ss:flambda-rounds}Specification of optimisation parameters by round}}
\@deflabeltype{ss:flambda-rounds}{subsection}
\@@addtocsec{htoc}{s:flambda-inlining}{0}{\@print{24.3}\quad{}\label{s:flambda-inlining}Inlining{}}
\new@anchor@label{sec602}{s:flambda-inlining}{{24.3}{X}{\label{s:flambda-inlining}Inlining}}
\@deflabeltype{s:flambda-inlining}{section}
\new@anchor@label{sec603}{sss:flambda-inlining-aside}{{24.3}{X}{\label{sss:flambda-inlining-aside}Aside: when inlining is performed}}
\@deflabeltype{sss:flambda-inlining-aside}{section}
\@@addtocsec{htoc}{ss:flambda-classic}{1}{\@print{24.3.1}\quad{}\label{ss:flambda-classic}Classic inlining heuristic{}}
\new@anchor@label{sec604}{ss:flambda-classic}{{24.3.1}{X}{\label{ss:flambda-classic}Classic inlining heuristic}}
\@deflabeltype{ss:flambda-classic}{subsection}
\@@addtocsec{htoc}{ss:flambda-inlining-overview}{1}{\@print{24.3.2}\quad{}\label{ss:flambda-inlining-overview}Overview of ``Flambda'' inlining heuristics{}}
\new@anchor@label{sec605}{ss:flambda-inlining-overview}{{24.3.2}{X}{\label{ss:flambda-inlining-overview}Overview of ``Flambda'' inlining heuristics}}
\@deflabeltype{ss:flambda-inlining-overview}{subsection}
\@@addtocsec{htoc}{ss:flambda-by-constructs}{1}{\@print{24.3.3}\quad{}\label{ss:flambda-by-constructs}Handling of specific language constructs{}}
\new@anchor@label{sec606}{ss:flambda-by-constructs}{{24.3.3}{X}{\label{ss:flambda-by-constructs}Handling of specific language constructs}}
\@deflabeltype{ss:flambda-by-constructs}{subsection}
\new@anchor@label{sec607}{sss:flambda-functors}{{24.3.3}{X}{\label{sss:flambda-functors}Functors}}
\@deflabeltype{sss:flambda-functors}{subsection}
\new@anchor@label{sec608}{sss:flambda-first-class-modules}{{24.3.3}{X}{\label{sss:flambda-first-class-modules}First-class modules}}
\@deflabeltype{sss:flambda-first-class-modules}{subsection}
\new@anchor@label{sec609}{sss:flambda-objects}{{24.3.3}{X}{\label{sss:flambda-objects}Objects}}
\@deflabeltype{sss:flambda-objects}{subsection}
\@@addtocsec{htoc}{ss:flambda-inlining-reports}{1}{\@print{24.3.4}\quad{}\label{ss:flambda-inlining-reports}Inlining reports{}}
\new@anchor@label{sec610}{ss:flambda-inlining-reports}{{24.3.4}{X}{\label{ss:flambda-inlining-reports}Inlining reports}}
\@deflabeltype{ss:flambda-inlining-reports}{subsection}
\@@addtocsec{htoc}{ss:flambda-assessment-inlining}{1}{\@print{24.3.5}\quad{}\label{ss:flambda-assessment-inlining}Assessment of inlining benefit{}}
\new@anchor@label{sec611}{ss:flambda-assessment-inlining}{{24.3.5}{X}{\label{ss:flambda-assessment-inlining}Assessment of inlining benefit}}
\@deflabeltype{ss:flambda-assessment-inlining}{subsection}
\@@addtocsec{htoc}{ss:flambda-speculation}{1}{\@print{24.3.6}\quad{}\label{ss:flambda-speculation}Control of speculation{}}
\new@anchor@label{sec612}{ss:flambda-speculation}{{24.3.6}{X}{\label{ss:flambda-speculation}Control of speculation}}
\@deflabeltype{ss:flambda-speculation}{subsection}
\@@addtocsec{htoc}{s:flambda-specialisation}{0}{\@print{24.4}\quad{}\label{s:flambda-specialisation}Specialisation{}}
\new@anchor@label{sec613}{s:flambda-specialisation}{{24.4}{X}{\label{s:flambda-specialisation}Specialisation}}
\@deflabeltype{s:flambda-specialisation}{section}
\@@addtocsec{htoc}{ss:flambda-assessment-specialisation}{1}{\@print{24.4.1}\quad{}\label{ss:flambda-assessment-specialisation}Assessment of specialisation benefit{}}
\new@anchor@label{sec616}{ss:flambda-assessment-specialisation}{{24.4.1}{X}{\label{ss:flambda-assessment-specialisation}Assessment of specialisation benefit}}
\@deflabeltype{ss:flambda-assessment-specialisation}{subsection}
\@@addtocsec{htoc}{s:flambda-defaults}{0}{\@print{24.5}\quad{}\label{s:flambda-defaults}Default settings of parameters{}}
\new@anchor@label{sec617}{s:flambda-defaults}{{24.5}{X}{\label{s:flambda-defaults}Default settings of parameters}}
\@deflabeltype{s:flambda-defaults}{section}
\@@addtocsec{htoc}{ss:flambda-o2}{1}{\@print{24.5.1}\quad{}\label{ss:flambda-o2}Settings at -O2 optimisation level{}}
\new@anchor@label{sec618}{ss:flambda-o2}{{24.5.1}{X}{\label{ss:flambda-o2}Settings at -O2 optimisation level}}
\@deflabeltype{ss:flambda-o2}{subsection}
\@@addtocsec{htoc}{ss:flambda-o3}{1}{\@print{24.5.2}\quad{}\label{ss:flambda-o3}Settings at -O3 optimisation level{}}
\new@anchor@label{sec619}{ss:flambda-o3}{{24.5.2}{X}{\label{ss:flambda-o3}Settings at -O3 optimisation level}}
\@deflabeltype{ss:flambda-o3}{subsection}
\@@addtocsec{htoc}{s:flambda-manual-control}{0}{\@print{24.6}\quad{}\label{s:flambda-manual-control}Manual control of inlining and specialisation{}}
\new@anchor@label{sec620}{s:flambda-manual-control}{{24.6}{X}{\label{s:flambda-manual-control}Manual control of inlining and specialisation}}
\@deflabeltype{s:flambda-manual-control}{section}
\@@addtocsec{htoc}{s:flambda-simplification}{0}{\@print{24.7}\quad{}\label{s:flambda-simplification}Simplification{}}
\new@anchor@label{sec622}{s:flambda-simplification}{{24.7}{X}{\label{s:flambda-simplification}Simplification}}
\@deflabeltype{s:flambda-simplification}{section}
\@@addtocsec{htoc}{s:flambda-other-transfs}{0}{\@print{24.8}\quad{}\label{s:flambda-other-transfs}Other code motion transformations{}}
\new@anchor@label{sec623}{s:flambda-other-transfs}{{24.8}{X}{\label{s:flambda-other-transfs}Other code motion transformations}}
\@deflabeltype{s:flambda-other-transfs}{section}
\@@addtocsec{htoc}{ss:flambda-lift-const}{1}{\@print{24.8.1}\quad{}\label{ss:flambda-lift-const}Lifting of constants{}}
\new@anchor@label{sec624}{ss:flambda-lift-const}{{24.8.1}{X}{\label{ss:flambda-lift-const}Lifting of constants}}
\@deflabeltype{ss:flambda-lift-const}{subsection}
\@@addtocsec{htoc}{ss:flambda-lift-toplevel-let}{1}{\@print{24.8.2}\quad{}\label{ss:flambda-lift-toplevel-let}Lifting of toplevel let bindings{}}
\new@anchor@label{sec626}{ss:flambda-lift-toplevel-let}{{24.8.2}{X}{\label{ss:flambda-lift-toplevel-let}Lifting of toplevel let bindings}}
\@deflabeltype{ss:flambda-lift-toplevel-let}{subsection}
\@@addtocsec{htoc}{s:flambda-unboxing}{0}{\@print{24.9}\quad{}\label{s:flambda-unboxing}Unboxing transformations{}}
\new@anchor@label{sec627}{s:flambda-unboxing}{{24.9}{X}{\label{s:flambda-unboxing}Unboxing transformations}}
\@deflabeltype{s:flambda-unboxing}{section}
\@@addtocsec{htoc}{ss:flambda-unbox-fvs}{1}{\@print{24.9.1}\quad{}\label{ss:flambda-unbox-fvs}Unboxing of closure variables{}}
\new@anchor@label{sec628}{ss:flambda-unbox-fvs}{{24.9.1}{X}{\label{ss:flambda-unbox-fvs}Unboxing of closure variables}}
\@deflabeltype{ss:flambda-unbox-fvs}{subsection}
\@@addtocsec{htoc}{ss:flambda-unbox-spec-args}{1}{\@print{24.9.2}\quad{}\label{ss:flambda-unbox-spec-args}Unboxing of specialised arguments{}}
\new@anchor@label{sec630}{ss:flambda-unbox-spec-args}{{24.9.2}{X}{\label{ss:flambda-unbox-spec-args}Unboxing of specialised arguments}}
\@deflabeltype{ss:flambda-unbox-spec-args}{subsection}
\@@addtocsec{htoc}{ss:flambda-unbox-closures}{1}{\@print{24.9.3}\quad{}\label{ss:flambda-unbox-closures}Unboxing of closures{}}
\new@anchor@label{sec632}{ss:flambda-unbox-closures}{{24.9.3}{X}{\label{ss:flambda-unbox-closures}Unboxing of closures}}
\@deflabeltype{ss:flambda-unbox-closures}{subsection}
\@@addtocsec{htoc}{s:flambda-remove-unused}{0}{\@print{24.10}\quad{}\label{s:flambda-remove-unused}Removal of unused code and values{}}
\new@anchor@label{sec635}{s:flambda-remove-unused}{{24.10}{X}{\label{s:flambda-remove-unused}Removal of unused code and values}}
\@deflabeltype{s:flambda-remove-unused}{section}
\@@addtocsec{htoc}{ss:flambda-redundant-let}{1}{\@print{24.10.1}\quad{}\label{ss:flambda-redundant-let}Removal of redundant let expressions{}}
\new@anchor@label{sec636}{ss:flambda-redundant-let}{{24.10.1}{X}{\label{ss:flambda-redundant-let}Removal of redundant let expressions}}
\@deflabeltype{ss:flambda-redundant-let}{subsection}
\@@addtocsec{htoc}{ss:flambda-redundant}{1}{\@print{24.10.2}\quad{}\label{ss:flambda-redundant}Removal of redundant program constructs{}}
\new@anchor@label{sec637}{ss:flambda-redundant}{{24.10.2}{X}{\label{ss:flambda-redundant}Removal of redundant program constructs}}
\@deflabeltype{ss:flambda-redundant}{subsection}
\@@addtocsec{htoc}{ss:flambda-remove-unused-args}{1}{\@print{24.10.3}\quad{}\label{ss:flambda-remove-unused-args}Removal of unused arguments{}}
\new@anchor@label{sec638}{ss:flambda-remove-unused-args}{{24.10.3}{X}{\label{ss:flambda-remove-unused-args}Removal of unused arguments}}
\@deflabeltype{ss:flambda-remove-unused-args}{subsection}
\@@addtocsec{htoc}{ss:flambda-removal-closure-vars}{1}{\@print{24.10.4}\quad{}\label{ss:flambda-removal-closure-vars}Removal of unused closure variables{}}
\new@anchor@label{sec639}{ss:flambda-removal-closure-vars}{{24.10.4}{X}{\label{ss:flambda-removal-closure-vars}Removal of unused closure variables}}
\@deflabeltype{ss:flambda-removal-closure-vars}{subsection}
\@@addtocsec{htoc}{s:flambda-other}{0}{\@print{24.11}\quad{}\label{s:flambda-other}Other code transformations{}}
\new@anchor@label{sec640}{s:flambda-other}{{24.11}{X}{\label{s:flambda-other}Other code transformations}}
\@deflabeltype{s:flambda-other}{section}
\@@addtocsec{htoc}{ss:flambda-non-escaping-refs}{1}{\@print{24.11.1}\quad{}\label{ss:flambda-non-escaping-refs}Transformation of non-escaping references into mutable variables{}}
\new@anchor@label{sec641}{ss:flambda-non-escaping-refs}{{24.11.1}{X}{\label{ss:flambda-non-escaping-refs}Transformation of non-escaping references into mutable variables}}
\@deflabeltype{ss:flambda-non-escaping-refs}{subsection}
\@@addtocsec{htoc}{ss:flambda-subst-closure-vars}{1}{\@print{24.11.2}\quad{}\label{ss:flambda-subst-closure-vars}Substitution of closure variables for specialised arguments{}}
\new@anchor@label{sec642}{ss:flambda-subst-closure-vars}{{24.11.2}{X}{\label{ss:flambda-subst-closure-vars}Substitution of closure variables for specialised arguments}}
\@deflabeltype{ss:flambda-subst-closure-vars}{subsection}
\@@addtocsec{htoc}{s:flambda-effects}{0}{\@print{24.12}\quad{}\label{s:flambda-effects}Treatment of effects{}}
\new@anchor@label{sec643}{s:flambda-effects}{{24.12}{X}{\label{s:flambda-effects}Treatment of effects}}
\@deflabeltype{s:flambda-effects}{section}
\@@addtocsec{htoc}{s:flambda-static-modules}{0}{\@print{24.13}\quad{}\label{s:flambda-static-modules}Compilation of statically-allocated modules{}}
\new@anchor@label{sec644}{s:flambda-static-modules}{{24.13}{X}{\label{s:flambda-static-modules}Compilation of statically-allocated modules}}
\@deflabeltype{s:flambda-static-modules}{section}
\@@addtocsec{htoc}{s:flambda-inhibition}{0}{\@print{24.14}\quad{}\label{s:flambda-inhibition}Inhibition of optimisation{}}
\new@anchor@label{sec645}{s:flambda-inhibition}{{24.14}{X}{\label{s:flambda-inhibition}Inhibition of optimisation}}
\@deflabeltype{s:flambda-inhibition}{section}
\@@addtocsec{htoc}{s:flambda-unsafe}{0}{\@print{24.15}\quad{}\label{s:flambda-unsafe}Use of unsafe operations{}}
\new@anchor@label{sec646}{s:flambda-unsafe}{{24.15}{X}{\label{s:flambda-unsafe}Use of unsafe operations}}
\@deflabeltype{s:flambda-unsafe}{section}
\@@addtocsec{htoc}{s:flambda-glossary}{0}{\@print{24.16}\quad{}\label{s:flambda-glossary}Glossary{}}
\new@anchor@label{sec647}{s:flambda-glossary}{{24.16}{X}{\label{s:flambda-glossary}Glossary}}
\@deflabeltype{s:flambda-glossary}{section}
\@@addtocsec{htoc}{sec648}{-1}{\@print{Chapter 25}\quad{}Fuzzing with afl-fuzz{}}
\@@addtocsec{htoc}{s:afl-overview}{0}{\@print{25.1}\quad{}\label{s:afl-overview}Overview{}}
\new@anchor@label{sec649}{s:afl-overview}{{25.1}{X}{\label{s:afl-overview}Overview}}
\@deflabeltype{s:afl-overview}{section}
\@@addtocsec{htoc}{s:afl-generate}{0}{\@print{25.2}\quad{}\label{s:afl-generate}Generating instrumentation{}}
\new@anchor@label{sec650}{s:afl-generate}{{25.2}{X}{\label{s:afl-generate}Generating instrumentation}}
\@deflabeltype{s:afl-generate}{section}
\@@addtocsec{htoc}{ss:afl-advanced}{1}{\@print{25.2.1}\quad{}\label{ss:afl-advanced}Advanced options{}}
\new@anchor@label{sec651}{ss:afl-advanced}{{25.2.1}{X}{\label{ss:afl-advanced}Advanced options}}
\@deflabeltype{ss:afl-advanced}{subsection}
\@@addtocsec{htoc}{s:afl-example}{0}{\@print{25.3}\quad{}\label{s:afl-example}Example{}}
\new@anchor@label{sec652}{s:afl-example}{{25.3}{X}{\label{s:afl-example}Example}}
\@deflabeltype{s:afl-example}{section}
\@@addtocsec{htoc}{sec653}{-1}{\@print{Chapter 26}\quad{}Runtime tracing with runtime events{}}
\newlabel{c:runtime-tracing}{{26}{X}{Runtime tracing with runtime events}}
\@deflabeltype{c:runtime-tracing}{chapter}
\@@addtocsec{htoc}{s:runtime-tracing-overview}{0}{\@print{26.1}\quad{}\label{s:runtime-tracing-overview}Overview{}}
\new@anchor@label{sec654}{s:runtime-tracing-overview}{{26.1}{X}{\label{s:runtime-tracing-overview}Overview}}
\@deflabeltype{s:runtime-tracing-overview}{section}
\@@addtocsec{htoc}{s:runtime-tracing-architecture}{0}{\@print{26.2}\quad{}\label{s:runtime-tracing-architecture}Architecture{}}
\new@anchor@label{sec655}{s:runtime-tracing-architecture}{{26.2}{X}{\label{s:runtime-tracing-architecture}Architecture}}
\@deflabeltype{s:runtime-tracing-architecture}{section}
\@@addtocsec{htoc}{s:runtime-tracing-event-sources}{1}{\@print{26.2.1}\quad{}\label{s:runtime-tracing-event-sources}Event sources{}}
\new@anchor@label{sec656}{s:runtime-tracing-event-sources}{{26.2.1}{X}{\label{s:runtime-tracing-event-sources}Event sources}}
\@deflabeltype{s:runtime-tracing-event-sources}{subsection}
\@@addtocsec{htoc}{s:runtime-tracing-ingestion}{1}{\@print{26.2.2}\quad{}\label{s:runtime-tracing-ingestion}Events transport{}}
\new@anchor@label{sec657}{s:runtime-tracing-ingestion}{{26.2.2}{X}{\label{s:runtime-tracing-ingestion}Events transport}}
\@deflabeltype{s:runtime-tracing-ingestion}{subsection}
\new@anchor@label{sec658}{s:runtime-tracing-ringbuffers}{{26.2.2}{X}{\label{s:runtime-tracing-ringbuffers}Ring buffers}}
\@deflabeltype{s:runtime-tracing-ringbuffers}{subsection}
\new@anchor@label{sec659}{s:runtime-tracing-apis}{{26.2.2}{X}{\label{s:runtime-tracing-apis}Consumption APIs}}
\@deflabeltype{s:runtime-tracing-apis}{subsection}
\@@addtocsec{htoc}{s:runtime-tracing-usage}{0}{\@print{26.3}\quad{}\label{s:runtime-tracing-usage}Usage{}}
\new@anchor@label{sec660}{s:runtime-tracing-usage}{{26.3}{X}{\label{s:runtime-tracing-usage}Usage}}
\@deflabeltype{s:runtime-tracing-usage}{section}
\@@addtocsec{htoc}{s:runtime-tracing-ocaml-apis}{1}{\@print{26.3.1}\quad{}\label{s:runtime-tracing-ocaml-apis}With OCaml APIs{}}
\new@anchor@label{sec661}{s:runtime-tracing-ocaml-apis}{{26.3.1}{X}{\label{s:runtime-tracing-ocaml-apis}With OCaml APIs}}
\@deflabeltype{s:runtime-tracing-ocaml-apis}{subsection}
\new@anchor@label{sec662}{s:runtime-tracing-environment-variables}{{26.3.1}{X}{\label{s:runtime-tracing-environment-variables}Environment variables}}
\@deflabeltype{s:runtime-tracing-environment-variables}{subsection}
\new@anchor@label{sec663}{s:runtime-tracing-instrumented-runtime}{{26.3.1}{X}{\label{s:runtime-tracing-instrumented-runtime}Building with the instrumented runtime}}
\@deflabeltype{s:runtime-tracing-instrumented-runtime}{subsection}
\@@addtocsec{htoc}{s:runtime-tracing-tooling}{1}{\@print{26.3.2}\quad{}\label{s:runtime-tracing-tooling}With tooling{}}
\new@anchor@label{sec664}{s:runtime-tracing-tooling}{{26.3.2}{X}{\label{s:runtime-tracing-tooling}With tooling}}
\@deflabeltype{s:runtime-tracing-tooling}{subsection}
\new@anchor@label{sec665}{s:runtime-tracing-latency}{{26.3.2}{X}{\label{s:runtime-tracing-latency}Measuring GC latency}}
\@deflabeltype{s:runtime-tracing-latency}{subsection}
\@@addtocsec{htoc}{s:runtime-tracing-custom-events}{0}{\@print{26.4}\quad{}\label{s:runtime-tracing-custom-events}Custom events{}}
\new@anchor@label{sec666}{s:runtime-tracing-custom-events}{{26.4}{X}{\label{s:runtime-tracing-custom-events}Custom events}}
\@deflabeltype{s:runtime-tracing-custom-events}{section}
\@@addtocsec{htoc}{s:runtime-tracing-custom-events-overview}{1}{\@print{26.4.1}\quad{}\label{s:runtime-tracing-custom-events-overview}Overview{}}
\new@anchor@label{sec667}{s:runtime-tracing-custom-events-overview}{{26.4.1}{X}{\label{s:runtime-tracing-custom-events-overview}Overview}}
\@deflabeltype{s:runtime-tracing-custom-events-overview}{subsection}
\@@addtocsec{htoc}{s:runtime-tracing-custom-events-usage}{1}{\@print{26.4.2}\quad{}\label{s:runtime-tracing-custom-events-usage}Tracing custom events: an
example{}}
\new@anchor@label{sec668}{s:runtime-tracing-custom-events-usage}{{26.4.2}{X}{\label{s:runtime-tracing-custom-events-usage}Tracing custom events: an
example}}
\@deflabeltype{s:runtime-tracing-custom-events-usage}{subsection}
\@@addtocsec{htoc}{sec669}{-1}{\@print{Chapter 27}\quad{}The ``Tail Modulo Constructor'' program transformation{}}
\newlabel{c:tail_mod_cons}{{27}{X}{The ``Tail Modulo Constructor'' program transformation}}
\@deflabeltype{c:tail_mod_cons}{chapter}
\@@addtocsec{htoc}{sec:disambiguation}{0}{\@print{27.1}\quad{}\label{sec:disambiguation}Disambiguation{}}
\new@anchor@label{sec675}{sec:disambiguation}{{27.1}{X}{\label{sec:disambiguation}Disambiguation}}
\@deflabeltype{sec:disambiguation}{section}
\@@addtocsec{htoc}{sec:out-of-tmc}{0}{\@print{27.2}\quad{}\label{sec:out-of-tmc}Danger: getting out of tail-mod-cons{}}
\new@anchor@label{sec676}{sec:out-of-tmc}{{27.2}{X}{\label{sec:out-of-tmc}Danger: getting out of tail-mod-cons}}
\@deflabeltype{sec:out-of-tmc}{section}
\@@addtocsec{htoc}{sec:details}{0}{\@print{27.3}\quad{}\label{sec:details}Details on the transformation{}}
\new@anchor@label{sec677}{sec:details}{{27.3}{X}{\label{sec:details}Details on the transformation}}
\@deflabeltype{sec:details}{section}
\@@addtocsec{htoc}{sec:limitations}{0}{\@print{27.4}\quad{}\label{sec:limitations}Current limitations{}}
\new@anchor@label{sec678}{sec:limitations}{{27.4}{X}{\label{sec:limitations}Current limitations}}
\@deflabeltype{sec:limitations}{section}
\@@addtocsec{htoc}{sec682}{-1}{\@print{Chapter 28}\quad{}Runtime detection of data races with ThreadSanitizer{}}
\newlabel{c:tsan}{{28}{X}{Runtime detection of data races with ThreadSanitizer}}
\@deflabeltype{c:tsan}{chapter}
\@@addtocsec{htoc}{s:tsan-overview}{0}{\@print{28.1}\quad{}\label{s:tsan-overview}Overview and usage{}}
\new@anchor@label{sec683}{s:tsan-overview}{{28.1}{X}{\label{s:tsan-overview}Overview and usage}}
\@deflabeltype{s:tsan-overview}{section}
\@@addtocsec{htoc}{s:tsan-performance}{0}{\@print{28.2}\quad{}\label{s:tsan-performance}Performance implications{}}
\new@anchor@label{sec684}{s:tsan-performance}{{28.2}{X}{\label{s:tsan-performance}Performance implications}}
\@deflabeltype{s:tsan-performance}{section}
\@@addtocsec{htoc}{s:tsan-false-neg-false-pos}{0}{\@print{28.3}\quad{}\label{s:tsan-false-neg-false-pos}False negatives and false positives{}}
\new@anchor@label{sec685}{s:tsan-false-neg-false-pos}{{28.3}{X}{\label{s:tsan-false-neg-false-pos}False negatives and false positives}}
\@deflabeltype{s:tsan-false-neg-false-pos}{section}
\@@addtocsec{htoc}{s:tsan-runtime-flags}{0}{\@print{28.4}\quad{}\label{s:tsan-runtime-flags}Runtime options{}}
\new@anchor@label{sec686}{s:tsan-runtime-flags}{{28.4}{X}{\label{s:tsan-runtime-flags}Runtime options}}
\@deflabeltype{s:tsan-runtime-flags}{section}
\@@addtocsec{htoc}{s:tsan-c-code}{0}{\@print{28.5}\quad{}\label{s:tsan-c-code}Guidelines for linking{}}
\new@anchor@label{sec687}{s:tsan-c-code}{{28.5}{X}{\label{s:tsan-c-code}Guidelines for linking}}
\@deflabeltype{s:tsan-c-code}{section}
\@@addtocsec{htoc}{s:tsan-signal-changes}{0}{\@print{28.6}\quad{}\label{s:tsan-signal-changes}Changes in the delivery of signals{}}
\new@anchor@label{sec688}{s:tsan-signal-changes}{{28.6}{X}{\label{s:tsan-signal-changes}Changes in the delivery of signals}}
\@deflabeltype{s:tsan-signal-changes}{section}
\@@addtocsec{htoc}{sec689}{-2}{\@print{Part IV}\quad{}The OCaml library{}}
\newlabel{p:library}{{IV}{X}{The OCaml library}}
\@deflabeltype{p:library}{part}
\@@addtocsec{htoc}{sec690}{-1}{\@print{Chapter 29}\quad{}The core library{}}
\newlabel{c:corelib}{{29}{X}{The core library}}
\@deflabeltype{c:corelib}{chapter}
\@@addtocsec{htoc}{s:core-builtins}{0}{\@print{29.1}\quad{}\label{s:core-builtins}Built-in types and predefined exceptions{}}
\new@anchor@label{sec691}{s:core-builtins}{{29.1}{X}{\label{s:core-builtins}Built-in types and predefined exceptions}}
\@deflabeltype{s:core-builtins}{section}
\new@anchor@label{sec692}{ss:builtin-types}{{29.1}{X}{\label{s:core-builtins}Built-in types and predefined exceptions}}
\@deflabeltype{ss:builtin-types}{section}
\new@anchor@label{sec693}{ss:predef-exn}{{29.1}{X}{\label{s:core-builtins}Built-in types and predefined exceptions}}
\@deflabeltype{ss:predef-exn}{section}
\@@addtocsec{htoc}{s:stdlib-module}{0}{\@print{29.2}\quad{}\label{s:stdlib-module}Module {\tt Stdlib}: the initially opened module{}}
\new@anchor@label{sec694}{s:stdlib-module}{{29.2}{X}{\label{s:stdlib-module}Module {\tt Stdlib}: the initially opened module}}
\@deflabeltype{s:stdlib-module}{section}
\@@addtocsec{htoc}{sec695}{-1}{\@print{Chapter 30}\quad{}The standard library{}}
\newlabel{c:stdlib}{{30}{X}{The standard library}}
\@deflabeltype{c:stdlib}{chapter}
\newlabel{stdlib:top}{{30}{X}{The standard library}}
\@deflabeltype{stdlib:top}{chapter}
\@@addtocsec{htoc}{sec696}{-1}{\@print{Chapter 31}\quad{}The compiler front-end{}}
\newlabel{c:parsinglib}{{31}{X}{The compiler front-end}}
\@deflabeltype{c:parsinglib}{chapter}
\newlabel{Compiler_libs}{{31}{X}{The compiler front-end}}
\@deflabeltype{Compiler_libs}{chapter}
\@@addtocsec{htoc}{sec697}{-1}{\@print{Chapter 32}\quad{}The unix library: Unix system calls{}}
\newlabel{c:unix}{{32}{X}{The unix library: Unix system calls}}
\@deflabeltype{c:unix}{chapter}
\@@addtocsec{htoc}{sec698}{-1}{\@print{Chapter 33}\quad{}The str library: regular expressions and string processing{}}
\@@addtocsec{htoc}{sec699}{-1}{\@print{Chapter 34}\quad{}The runtime_events library{}}
\newlabel{c:runtime_events}{{34}{X}{The runtime_events library}}
\@deflabeltype{c:runtime_events}{chapter}
\@@addtocsec{htoc}{sec700}{-1}{\@print{Chapter 35}\quad{}The threads library{}}
\newlabel{c:threads}{{35}{X}{The threads library}}
\@deflabeltype{c:threads}{chapter}
\@@addtocsec{htoc}{sec701}{-1}{\@print{Chapter 36}\quad{}The dynlink library: dynamic loading and linking of object files{}}
\@@addtocsec{htoc}{sec702}{-1}{\@print{Chapter 37}\quad{}Recently removed or moved libraries (Graphics, Bigarray, Num, LablTk){}}
\@@addtocsec{htoc}{s:graphics-removed}{0}{\@print{37.1}\quad{}\label{s:graphics-removed}The Graphics Library{}}
\new@anchor@label{sec703}{s:graphics-removed}{{37.1}{X}{\label{s:graphics-removed}The Graphics Library}}
\@deflabeltype{s:graphics-removed}{section}
\@@addtocsec{htoc}{s:bigarray-moved}{0}{\@print{37.2}\quad{}\label{s:bigarray-moved}The Bigarray Library{}}
\new@anchor@label{sec704}{s:bigarray-moved}{{37.2}{X}{\label{s:bigarray-moved}The Bigarray Library}}
\@deflabeltype{s:bigarray-moved}{section}
\@@addtocsec{htoc}{sec705}{0}{\@print{37.3}\quad{}\label{s:graphics-removed}The Num Library{}}
\@deflabeltype{s:graphics-removed}{section}
\@@addtocsec{htoc}{s:labltk-removed}{0}{\@print{37.4}\quad{}\label{s:labltk-removed}The Labltk Library and OCamlBrowser{}}
\new@anchor@label{sec706}{s:labltk-removed}{{37.4}{X}{\label{s:labltk-removed}The Labltk Library and OCamlBrowser}}
\@deflabeltype{s:labltk-removed}{section}
\@@addtocsec{htoc}{sec707}{-2}{\@print{Part V}\quad{}Indexes{}}
\newlabel{p:indexes}{{V}{X}{Indexes}}
\@deflabeltype{p:indexes}{part}
\newlabel{section@the@hevea@index@manual.kwd}{{V}{X}{Indexes}}
\@deflabeltype{section@the@hevea@index@manual.kwd}{part}
