\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}}
\@deflabeltype{p:tutorials}{part}
\@@addtocsec{htoc}{sec7}{-1}{\@print{Chapter ‍1}\quad{}The core language{}}
\newlabel{c:core-xamples}{{1}{X}}
\@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}}
\@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}}
\@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}}
\@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}}
\@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}}
\@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}}
\@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}}
\@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}}
\@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}}
\@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}}
\@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}}
\@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}}
\@deflabeltype{s:standalone-programs}{section}
\@@addtocsec{htoc}{sec20}{-1}{\@print{Chapter ‍2}\quad{}The module system{}}
\newlabel{c:moduleexamples}{{2}{X}}
\@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}}
\@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}}
\@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}}
\@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}}
\@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}}
\@deflabeltype{s:separate-compilation}{section}
\@@addtocsec{htoc}{sec26}{-1}{\@print{Chapter ‍3}\quad{}Objects in OCaml{}}
\newlabel{c:objectexamples}{{3}{X}}
\@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}}
\@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}}
\@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}}
\@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}}
\@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}}
\@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}}
\@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}}
\@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}}
\@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}}
\@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}}
\@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}}
\@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}}
\@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}}
\@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}}
\@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}}
\@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}}
\@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}}
\@deflabeltype{s:friends}{section}
\@@addtocsec{htoc}{sec44}{-1}{\@print{Chapter ‍4}\quad{}Labeled arguments{}}
\newlabel{c:labl-examples}{{4}{X}}
\@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}}
\@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}}
\@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}}
\@deflabeltype{s:label-suggestions}{section}
\@@addtocsec{htoc}{sec48}{-1}{\@print{Chapter ‍5}\quad{}Polymorphic variants{}}
\newlabel{c:poly-variant}{{5}{X}}
\@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}}
\@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}}
\@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}}
\@deflabeltype{s:polyvariant-weaknesses}{section}
\@@addtocsec{htoc}{sec52}{-1}{\@print{Chapter ‍6}\quad{}Polymorphism and its limitations{}}
\newlabel{c:polymorphism}{{6}{X}}
\@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}}
\@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}}
\@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}}
\@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}}
\@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}}
\@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}}
\@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}}
\@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}}
\@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}}
\@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}}
\@deflabeltype{s:higher-rank-poly}{section}
\@@addtocsec{htoc}{sec63}{-1}{\@print{Chapter ‍7}\quad{}Generalized algebraic datatypes{}}
\newlabel{c:gadts-tutorial}{{7}{X}}
\@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}}
\@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}}
\@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}}
\@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}}
\@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}}
\@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}}
\@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}}
\@deflabeltype{s:gadt-equation-nonlocal-abstract}{section}
\@@addtocsec{htoc}{sec71}{-1}{\@print{Chapter ‍8}\quad{}Advanced examples with classes and modules{}}
\newlabel{c:advexamples}{{8}{X}}
\@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{sec72}{s:extended-bank-accounts}{{8.1}{X}}
\@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{sec73}{s:modules-as-classes}{{8.2}{X}}
\@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{sec74}{ss:string-as-class}{{8.2.1}{X}}
\@deflabeltype{ss:string-as-class}{subsection}
\new@anchor@label{sec75}{sss:stack-as-class}{{8.2.1}{X}}
\@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{sec76}{ss:hashtbl-as-class}{{8.2.2}{X}}
\@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{sec77}{ss:set-as-class}{{8.2.3}{X}}
\@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{sec78}{s:subject-observer}{{8.3}{X}}
\@deflabeltype{s:subject-observer}{section}
\@@addtocsec{htoc}{sec79}{-1}{\@print{Chapter ‍9}\quad{}Parallel programming{}}
\newlabel{c:parallelism}{{9}{X}}
\@deflabeltype{c:parallelism}{chapter}
\@@addtocsec{htoc}{s:par_domains}{0}{\@print{9.1}\quad{}\label{s:par_domains}Domains{}}
\new@anchor@label{sec80}{s:par_domains}{{9.1}{X}}
\@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{sec81}{s:par_join}{{9.1.1}{X}}
\@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{sec82}{s:par_parfib}{{9.2}{X}}
\@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{sec83}{s:par_parfib_domainslib}{{9.2.1}{X}}
\@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{sec84}{s:par_iterators}{{9.2.2}{X}}
\@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{sec85}{s:par_gc}{{9.3}{X}}
\@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{sec86}{s:par_mm_easy}{{9.4}{X}}
\@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{sec87}{s:par_sync}{{9.5}{X}}
\@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{sec88}{s:par_systhread_interaction}{{9.5.1}{X}}
\@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{sec89}{s:par_c_bindings}{{9.6}{X}}
\@deflabeltype{s:par_c_bindings}{section}
\@@addtocsec{htoc}{s:par_atomics}{0}{\@print{9.7}\quad{}\label{s:par_atomics}Atomics{}}
\new@anchor@label{sec90}{s:par_atomics}{{9.7}{X}}
\@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{sec91}{s:par_lockfree_stack}{{9.7.1}{X}}
\@deflabeltype{s:par_lockfree_stack}{subsection}
\@@addtocsec{htoc}{sec92}{-1}{\@print{Chapter ‍10}\quad{}Memory model: The hard bits{}}
\newlabel{c:memorymodel}{{10}{X}}
\@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{sec93}{s:why_relaxed_memory}{{10.1}{X}}
\@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{sec94}{ss:mm_comp_opt}{{10.1.1}{X}}
\@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{sec95}{ss:mm_hw_opt}{{10.1.2}{X}}
\@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{sec96}{s:drf_sc}{{10.2}{X}}
\@deflabeltype{s:drf_sc}{section}
\@@addtocsec{htoc}{s:atomics}{1}{\@print{10.2.1}\quad{}\label{s:atomics}Memory locations{}}
\new@anchor@label{sec97}{s:atomics}{{10.2.1}{X}}
\@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{sec98}{s:happens_before}{{10.2.2}{X}}
\@deflabeltype{s:happens_before}{subsection}
\@@addtocsec{htoc}{s:datarace}{1}{\@print{10.2.3}\quad{}\label{s:datarace}Data race{}}
\new@anchor@label{sec99}{s:datarace}{{10.2.3}{X}}
\@deflabeltype{s:datarace}{subsection}
\@@addtocsec{htoc}{ss:drf_sc}{1}{\@print{10.2.4}\quad{}\label{ss:drf_sc}DRF-SC{}}
\new@anchor@label{sec100}{ss:drf_sc}{{10.2.4}{X}}
\@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{sec101}{s:drf_reasoning}{{10.3}{X}}
\@deflabeltype{s:drf_reasoning}{section}
\new@anchor@label{sec102}{s:mm_msg_passing}{{10.3}{X}}
\@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{sec103}{s:local_drf}{{10.4}{X}}
\@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{sec104}{s:mm_semantics}{{10.5}{X}}
\@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{sec105}{ss:mm_non_atomic}{{10.5.1}{X}}
\@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{sec106}{ss:mm_domains}{{10.5.2}{X}}
\@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{sec107}{ss:mm_na_access}{{10.5.3}{X}}
\@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{sec108}{ss:mm_at_access}{{10.5.4}{X}}
\@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{sec109}{s:mm_semantics_reasoning}{{10.5.5}{X}}
\@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{sec110}{s:mm_tearing}{{10.6}{X}}
\@deflabeltype{s:mm_tearing}{section}
\@@addtocsec{htoc}{sec111}{-2}{\@print{Part ‍II}\quad{}The OCaml language{}}
\newlabel{p:refman}{{II}{X}}
\@deflabeltype{p:refman}{part}
\@@addtocsec{htoc}{sec112}{-1}{\@print{Chapter ‍11}\quad{}The OCaml language{}}
\newlabel{c:refman}{{11}{X}}
\@deflabeltype{c:refman}{chapter}
\new@anchor@label{sec113}{ss:foreword}{{11}{X}}
\@deflabeltype{ss:foreword}{chapter}
\new@anchor@label{sec114}{ss:notations}{{11}{X}}
\@deflabeltype{ss:notations}{chapter}
\@@addtocsec{htoc}{s:lexical-conventions}{0}{\@print{11.1}\quad{}\label{s:lexical-conventions}Lexical conventions{}}
\new@anchor@label{sec115}{s:lexical-conventions}{{11.1}{X}}
\@deflabeltype{s:lexical-conventions}{section}
\new@anchor@label{sec116}{sss:lex:blanks}{{11.1}{X}}
\@deflabeltype{sss:lex:blanks}{section}
\new@anchor@label{sec117}{sss:lex:comments}{{11.1}{X}}
\@deflabeltype{sss:lex:comments}{section}
\new@anchor@label{sec118}{sss:lex:identifiers}{{11.1}{X}}
\@deflabeltype{sss:lex:identifiers}{section}
\stx@exists{ident}\stx@exists{capitalized-ident}\stx@exists{lowercase-ident}\stx@exists{letter}\new@anchor@label{sec119}{sss:integer-literals}{{11.1}{X}}
\@deflabeltype{sss:integer-literals}{section}
\stx@exists{integer-literal}\stx@exists{int32-literal}\stx@exists{int64-literal}\stx@exists{nativeint-literal}\new@anchor@label{sec120}{sss:floating-point-literals}{{11.1}{X}}
\@deflabeltype{sss:floating-point-literals}{section}
\stx@exists{float-literal}\new@anchor@label{sec121}{sss:character-literals}{{11.1}{X}}
\@deflabeltype{sss:character-literals}{section}
\newlabel{s:characterliteral}{{11.1}{X}}
\@deflabeltype{s:characterliteral}{section}
\stx@exists{char-literal}\stx@exists{escape-sequence}\new@anchor@label{sec122}{sss:stringliterals}{{11.1}{X}}
\@deflabeltype{sss:stringliterals}{section}
\stx@exists{string-literal}\stx@exists{quoted-string-id}\stx@exists{string-character}\new@anchor@label{sec123}{sss:labelname}{{11.1}{X}}
\@deflabeltype{sss:labelname}{section}
\stx@exists{label-name}\stx@exists{label}\stx@exists{optlabel}\new@anchor@label{sec124}{sss:lex-ops-symbols}{{11.1}{X}}
\@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{sec125}{sss:keywords}{{11.1}{X}}
\@deflabeltype{sss:keywords}{section}
\new@anchor@label{sec126}{sss:lex-ambiguities}{{11.1}{X}}
\@deflabeltype{sss:lex-ambiguities}{section}
\new@anchor@label{sec127}{sss:lex-linedir}{{11.1}{X}}
\@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{sec128}{s:values}{{11.2}{X}}
\@deflabeltype{s:values}{section}
\@@addtocsec{htoc}{ss:values:base}{1}{\@print{11.2.1}\quad{}\label{ss:values:base}Base values{}}
\new@anchor@label{sec129}{ss:values:base}{{11.2.1}{X}}
\@deflabeltype{ss:values:base}{subsection}
\new@anchor@label{sec130}{sss:values:integer}{{11.2.1}{X}}
\@deflabeltype{sss:values:integer}{subsection}
\new@anchor@label{sec131}{sss:values:float}{{11.2.1}{X}}
\@deflabeltype{sss:values:float}{subsection}
\new@anchor@label{sec132}{sss:values:char}{{11.2.1}{X}}
\@deflabeltype{sss:values:char}{subsection}
\new@anchor@label{sec133}{sss:values:string}{{11.2.1}{X}}
\@deflabeltype{sss:values:string}{subsection}
\@@addtocsec{htoc}{ss:values:tuple}{1}{\@print{11.2.2}\quad{}\label{ss:values:tuple}Tuples{}}
\new@anchor@label{sec134}{ss:values:tuple}{{11.2.2}{X}}
\@deflabeltype{ss:values:tuple}{subsection}
\@@addtocsec{htoc}{ss:values:records}{1}{\@print{11.2.3}\quad{}\label{ss:values:records}Records{}}
\new@anchor@label{sec135}{ss:values:records}{{11.2.3}{X}}
\@deflabeltype{ss:values:records}{subsection}
\@@addtocsec{htoc}{ss:values:array}{1}{\@print{11.2.4}\quad{}\label{ss:values:array}Arrays{}}
\new@anchor@label{sec136}{ss:values:array}{{11.2.4}{X}}
\@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{sec137}{ss:values:variant}{{11.2.5}{X}}
\@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{sec138}{ss:values:polyvars}{{11.2.6}{X}}
\@deflabeltype{ss:values:polyvars}{subsection}
\@@addtocsec{htoc}{ss:values:fun}{1}{\@print{11.2.7}\quad{}\label{ss:values:fun}Functions{}}
\new@anchor@label{sec139}{ss:values:fun}{{11.2.7}{X}}
\@deflabeltype{ss:values:fun}{subsection}
\@@addtocsec{htoc}{ss:values:obj}{1}{\@print{11.2.8}\quad{}\label{ss:values:obj}Objects{}}
\new@anchor@label{sec140}{ss:values:obj}{{11.2.8}{X}}
\@deflabeltype{ss:values:obj}{subsection}
\@@addtocsec{htoc}{s:names}{0}{\@print{11.3}\quad{}\label{s:names}Names{}}
\new@anchor@label{sec141}{s:names}{{11.3}{X}}
\@deflabeltype{s:names}{section}
\new@anchor@label{sec142}{sss:naming-objects}{{11.3}{X}}
\@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{sec143}{sss:refer-named}{{11.3}{X}}
\@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{sec144}{s:typexpr}{{11.4}{X}}
\@deflabeltype{s:typexpr}{section}
\stx@exists{typexpr}\stx@exists{poly-typexpr}\stx@exists{method-type}\new@anchor@label{sec145}{sss:typexpr-variables}{{11.4}{X}}
\@deflabeltype{sss:typexpr-variables}{section}
\new@anchor@label{sec146}{sss:typexr:parenthesized}{{11.4}{X}}
\@deflabeltype{sss:typexr:parenthesized}{section}
\new@anchor@label{sec147}{sss:typexr-fun}{{11.4}{X}}
\@deflabeltype{sss:typexr-fun}{section}
\new@anchor@label{sec148}{sss:typexpr-tuple}{{11.4}{X}}
\@deflabeltype{sss:typexpr-tuple}{section}
\new@anchor@label{sec149}{sss:typexpr-constructed}{{11.4}{X}}
\@deflabeltype{sss:typexpr-constructed}{section}
\new@anchor@label{sec150}{sss:typexpr-aliased-recursive}{{11.4}{X}}
\@deflabeltype{sss:typexpr-aliased-recursive}{section}
\new@anchor@label{sec151}{sss:typexpr-polyvar}{{11.4}{X}}
\@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{sec152}{sss:typexpr-obj}{{11.4}{X}}
\@deflabeltype{sss:typexpr-obj}{section}
\new@anchor@label{sec153}{sss:typexpr-sharp-types}{{11.4}{X}}
\@deflabeltype{sss:typexpr-sharp-types}{section}
\new@anchor@label{sec154}{sss:typexpr-variant-record}{{11.4}{X}}
\@deflabeltype{sss:typexpr-variant-record}{section}
\@@addtocsec{htoc}{s:const}{0}{\@print{11.5}\quad{}\label{s:const}Constants{}}
\new@anchor@label{sec155}{s:const}{{11.5}{X}}
\@deflabeltype{s:const}{section}
\stx@exists{constant}\@@addtocsec{htoc}{s:patterns}{0}{\@print{11.6}\quad{}\label{s:patterns}Patterns{}}
\new@anchor@label{sec156}{s:patterns}{{11.6}{X}}
\@deflabeltype{s:patterns}{section}
\stx@exists{pattern}\new@anchor@label{sec157}{sss:pat-variable}{{11.6}{X}}
\@deflabeltype{sss:pat-variable}{section}
\new@anchor@label{sec158}{sss:pat-const}{{11.6}{X}}
\@deflabeltype{sss:pat-const}{section}
\new@anchor@label{sec159}{sss:pat-alias}{{11.6}{X}}
\@deflabeltype{sss:pat-alias}{section}
\new@anchor@label{sec160}{sss:pat-parenthesized}{{11.6}{X}}
\@deflabeltype{sss:pat-parenthesized}{section}
\new@anchor@label{sec161}{sss:pat-or}{{11.6}{X}}
\@deflabeltype{sss:pat-or}{section}
\new@anchor@label{sec162}{sss:pat-variant}{{11.6}{X}}
\@deflabeltype{sss:pat-variant}{section}
\new@anchor@label{sec163}{sss:pat-polyvar}{{11.6}{X}}
\@deflabeltype{sss:pat-polyvar}{section}
\new@anchor@label{sec164}{sss:pat-polyvar-abbrev}{{11.6}{X}}
\@deflabeltype{sss:pat-polyvar-abbrev}{section}
\new@anchor@label{sec165}{sss:pat-tuple}{{11.6}{X}}
\@deflabeltype{sss:pat-tuple}{section}
\new@anchor@label{sec166}{sss:pat-record}{{11.6}{X}}
\@deflabeltype{sss:pat-record}{section}
\new@anchor@label{sec167}{sss:pat-array}{{11.6}{X}}
\@deflabeltype{sss:pat-array}{section}
\new@anchor@label{sec168}{sss:pat-range}{{11.6}{X}}
\@deflabeltype{sss:pat-range}{section}
\new@anchor@label{sec169}{sss:pat-lazy}{{11.6}{X}}
\@deflabeltype{sss:pat-lazy}{section}
\new@anchor@label{sec170}{sss:exception-match}{{11.6}{X}}
\@deflabeltype{sss:exception-match}{section}
\new@anchor@label{sec171}{sss:pat-open}{{11.6}{X}}
\@deflabeltype{sss:pat-open}{section}
\@@addtocsec{htoc}{s:value-expr}{0}{\@print{11.7}\quad{}\label{s:value-expr}Expressions{}}
\new@anchor@label{sec172}{s:value-expr}{{11.7}{X}}
\@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}\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{sec173}{ss:precedence-and-associativity}{{11.7.1}{X}}
\@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{sec174}{ss:expr-basic}{{11.7.2}{X}}
\@deflabeltype{ss:expr-basic}{subsection}
\new@anchor@label{sec175}{sss:expr-constants}{{11.7.2}{X}}
\@deflabeltype{sss:expr-constants}{subsection}
\new@anchor@label{sec176}{sss:expr-var}{{11.7.2}{X}}
\@deflabeltype{sss:expr-var}{subsection}
\new@anchor@label{sec177}{sss:expr-parenthesized}{{11.7.2}{X}}
\@deflabeltype{sss:expr-parenthesized}{subsection}
\new@anchor@label{sec178}{sss:expr-functions-application}{{11.7.2}{X}}
\@deflabeltype{sss:expr-functions-application}{subsection}
\new@anchor@label{sec179}{sss:expr-function-definition}{{11.7.2}{X}}
\@deflabeltype{sss:expr-function-definition}{subsection}
\new@anchor@label{sec180}{sss:guards-in-pattern-matchings}{{11.7.2}{X}}
\@deflabeltype{sss:guards-in-pattern-matchings}{subsection}
\new@anchor@label{sec181}{sss:expr-localdef}{{11.7.2}{X}}
\@deflabeltype{sss:expr-localdef}{subsection}
\new@anchor@label{sec182}{sss:expr-let-exception}{{11.7.2}{X}}
\@deflabeltype{sss:expr-let-exception}{subsection}
\new@anchor@label{sec183}{sss:expr-explicit-polytype}{{11.7.2}{X}}
\@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{sec184}{ss:expr-control}{{11.7.3}{X}}
\@deflabeltype{ss:expr-control}{subsection}
\new@anchor@label{sec185}{sss:expr-sequence}{{11.7.3}{X}}
\@deflabeltype{sss:expr-sequence}{subsection}
\new@anchor@label{sec186}{sss:expr-conditional}{{11.7.3}{X}}
\@deflabeltype{sss:expr-conditional}{subsection}
\new@anchor@label{sec187}{sss:expr-case}{{11.7.3}{X}}
\@deflabeltype{sss:expr-case}{subsection}
\new@anchor@label{sec188}{sss:expr-boolean-operators}{{11.7.3}{X}}
\@deflabeltype{sss:expr-boolean-operators}{subsection}
\new@anchor@label{sec189}{sss:expr-loops}{{11.7.3}{X}}
\@deflabeltype{sss:expr-loops}{subsection}
\new@anchor@label{sec190}{sss:expr-exception-handling}{{11.7.3}{X}}
\@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{sec191}{ss:expr-ops-on-data}{{11.7.4}{X}}
\@deflabeltype{ss:expr-ops-on-data}{subsection}
\new@anchor@label{sec192}{sss:expr-products}{{11.7.4}{X}}
\@deflabeltype{sss:expr-products}{subsection}
\new@anchor@label{sec193}{sss:expr-variants}{{11.7.4}{X}}
\@deflabeltype{sss:expr-variants}{subsection}
\new@anchor@label{sec194}{sss:expr-polyvars}{{11.7.4}{X}}
\@deflabeltype{sss:expr-polyvars}{subsection}
\new@anchor@label{sec195}{sss:expr-records}{{11.7.4}{X}}
\@deflabeltype{sss:expr-records}{subsection}
\new@anchor@label{sec196}{sss:expr-arrays}{{11.7.4}{X}}
\@deflabeltype{sss:expr-arrays}{subsection}
\new@anchor@label{sec197}{sss:expr-strings}{{11.7.4}{X}}
\@deflabeltype{sss:expr-strings}{subsection}
\@@addtocsec{htoc}{ss:expr-operators}{1}{\@print{11.7.5}\quad{}\label{ss:expr-operators}Operators{}}
\new@anchor@label{sec198}{ss:expr-operators}{{11.7.5}{X}}
\@deflabeltype{ss:expr-operators}{subsection}
\@@addtocsec{htoc}{ss:expr-obj}{1}{\@print{11.7.6}\quad{}\label{ss:expr-obj}Objects{}}
\new@anchor@label{sec199}{ss:expr-obj}{{11.7.6}{X}}
\@deflabeltype{ss:expr-obj}{subsection}
\newlabel{s:objects}{{11.7.6}{X}}
\@deflabeltype{s:objects}{subsection}
\new@anchor@label{sec200}{sss:expr-obj-creation}{{11.7.6}{X}}
\@deflabeltype{sss:expr-obj-creation}{subsection}
\new@anchor@label{sec201}{sss:expr-obj-immediate}{{11.7.6}{X}}
\@deflabeltype{sss:expr-obj-immediate}{subsection}
\new@anchor@label{sec202}{sss:expr-method}{{11.7.6}{X}}
\@deflabeltype{sss:expr-method}{subsection}
\new@anchor@label{sec203}{sss:expr-obj-variables}{{11.7.6}{X}}
\@deflabeltype{sss:expr-obj-variables}{subsection}
\new@anchor@label{sec204}{sss:expr-obj-duplication}{{11.7.6}{X}}
\@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{sec205}{ss:expr-coercions}{{11.7.7}{X}}
\@deflabeltype{ss:expr-coercions}{subsection}
\new@anchor@label{sec206}{sss:expr-obj-types}{{11.7.7}{X}}
\@deflabeltype{sss:expr-obj-types}{subsection}
\new@anchor@label{sec207}{sss:expr-polyvar-types}{{11.7.7}{X}}
\@deflabeltype{sss:expr-polyvar-types}{subsection}
\new@anchor@label{sec208}{sss:expr-variance}{{11.7.7}{X}}
\@deflabeltype{sss:expr-variance}{subsection}
\@@addtocsec{htoc}{ss:expr-other}{1}{\@print{11.7.8}\quad{}\label{ss:expr-other}Other{}}
\new@anchor@label{sec209}{ss:expr-other}{{11.7.8}{X}}
\@deflabeltype{ss:expr-other}{subsection}
\new@anchor@label{sec210}{sss:expr-assertion}{{11.7.8}{X}}
\@deflabeltype{sss:expr-assertion}{subsection}
\new@anchor@label{sec211}{sss:expr-lazy}{{11.7.8}{X}}
\@deflabeltype{sss:expr-lazy}{subsection}
\new@anchor@label{sec212}{sss:expr-local-modules}{{11.7.8}{X}}
\@deflabeltype{sss:expr-local-modules}{subsection}
\new@anchor@label{sec213}{sss:local-opens}{{11.7.8}{X}}
\@deflabeltype{sss:local-opens}{subsection}
\@@addtocsec{htoc}{s:tydef}{0}{\@print{11.8}\quad{}\label{s:tydef}Type and exception definitions{}}
\new@anchor@label{sec214}{s:tydef}{{11.8}{X}}
\@deflabeltype{s:tydef}{section}
\@@addtocsec{htoc}{ss:typedefs}{1}{\@print{11.8.1}\quad{}\label{ss:typedefs}Type definitions{}}
\new@anchor@label{sec215}{ss:typedefs}{{11.8.1}{X}}
\@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{sec216}{ss:exndef}{{11.8.2}{X}}
\@deflabeltype{ss:exndef}{subsection}
\stx@exists{exception-definition}\@@addtocsec{htoc}{s:classes}{0}{\@print{11.9}\quad{}\label{s:classes}Classes{}}
\new@anchor@label{sec217}{s:classes}{{11.9}{X}}
\@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{sec218}{ss:classes:class-types}{{11.9.1}{X}}
\@deflabeltype{ss:classes:class-types}{subsection}
\stx@exists{class-type}\stx@exists{class-body-type}\stx@exists{class-field-spec}\new@anchor@label{sec219}{sss:clty:simple}{{11.9.1}{X}}
\@deflabeltype{sss:clty:simple}{subsection}
\new@anchor@label{sec220}{sss:clty-fun}{{11.9.1}{X}}
\@deflabeltype{sss:clty-fun}{subsection}
\new@anchor@label{sec221}{sss:clty:body}{{11.9.1}{X}}
\@deflabeltype{sss:clty:body}{subsection}
\new@anchor@label{sec222}{sss:clty-open}{{11.9.1}{X}}
\@deflabeltype{sss:clty-open}{subsection}
\new@anchor@label{sec223}{sss:clty-inheritance}{{11.9.1}{X}}
\@deflabeltype{sss:clty-inheritance}{subsection}
\new@anchor@label{sec224}{sss:clty-variable}{{11.9.1}{X}}
\@deflabeltype{sss:clty-variable}{subsection}
\new@anchor@label{sec225}{sss:clty-meth}{{11.9.1}{X}}
\@deflabeltype{sss:clty-meth}{subsection}
\new@anchor@label{sec226}{sss:class-virtual-meth-spec}{{11.9.1}{X}}
\@deflabeltype{sss:class-virtual-meth-spec}{subsection}
\new@anchor@label{sec227}{sss:class-constraints}{{11.9.1}{X}}
\@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{sec228}{ss:class-expr}{{11.9.2}{X}}
\@deflabeltype{ss:class-expr}{subsection}
\stx@exists{class-expr}\stx@exists{class-field}\new@anchor@label{sec229}{sss:class-simple}{{11.9.2}{X}}
\@deflabeltype{sss:class-simple}{subsection}
\new@anchor@label{sec230}{sss:class-app}{{11.9.2}{X}}
\@deflabeltype{sss:class-app}{subsection}
\new@anchor@label{sec231}{sss:class-fun}{{11.9.2}{X}}
\@deflabeltype{sss:class-fun}{subsection}
\new@anchor@label{sec232}{sss:class-localdefs}{{11.9.2}{X}}
\@deflabeltype{sss:class-localdefs}{subsection}
\new@anchor@label{sec233}{sss:class-opens}{{11.9.2}{X}}
\@deflabeltype{sss:class-opens}{subsection}
\new@anchor@label{sec234}{sss:class-body}{{11.9.2}{X}}
\@deflabeltype{sss:class-body}{subsection}
\stx@exists{class-body}\new@anchor@label{sec235}{sss:class-inheritance}{{11.9.2}{X}}
\@deflabeltype{sss:class-inheritance}{subsection}
\new@anchor@label{sec236}{sss:class-variables}{{11.9.2}{X}}
\@deflabeltype{sss:class-variables}{subsection}
\new@anchor@label{sec237}{sss:class-virtual-variable}{{11.9.2}{X}}
\@deflabeltype{sss:class-virtual-variable}{subsection}
\new@anchor@label{sec238}{sss:class-method}{{11.9.2}{X}}
\@deflabeltype{sss:class-method}{subsection}
\new@anchor@label{sec239}{sss:class-virtual-meth}{{11.9.2}{X}}
\@deflabeltype{sss:class-virtual-meth}{subsection}
\new@anchor@label{sec240}{sss:class-explicit-overriding}{{11.9.2}{X}}
\@deflabeltype{sss:class-explicit-overriding}{subsection}
\new@anchor@label{sec241}{sss:class-type-constraints}{{11.9.2}{X}}
\@deflabeltype{sss:class-type-constraints}{subsection}
\new@anchor@label{sec242}{sss:class-initializers}{{11.9.2}{X}}
\@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{sec243}{ss:class-def}{{11.9.3}{X}}
\@deflabeltype{ss:class-def}{subsection}
\newlabel{s:classdef}{{11.9.3}{X}}
\@deflabeltype{s:classdef}{subsection}
\stx@exists{class-definition}\stx@exists{class-binding}\stx@exists{type-parameters}\new@anchor@label{sec244}{sss:class-virtual}{{11.9.3}{X}}
\@deflabeltype{sss:class-virtual}{subsection}
\new@anchor@label{sec245}{sss:class-type-params}{{11.9.3}{X}}
\@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{sec246}{ss:class-spec}{{11.9.4}{X}}
\@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{sec247}{ss:classtype}{{11.9.5}{X}}
\@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{sec248}{s:modtypes}{{11.10}{X}}
\@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{sec249}{ss:mty-simple}{{11.10.1}{X}}
\@deflabeltype{ss:mty-simple}{subsection}
\@@addtocsec{htoc}{ss:mty-signatures}{1}{\@print{11.10.2}\quad{}\label{ss:mty-signatures}Signatures{}}
\new@anchor@label{sec250}{ss:mty-signatures}{{11.10.2}{X}}
\@deflabeltype{ss:mty-signatures}{subsection}
\new@anchor@label{sec251}{sss:mty-values}{{11.10.2}{X}}
\@deflabeltype{sss:mty-values}{subsection}
\new@anchor@label{sec252}{sss:mty-type}{{11.10.2}{X}}
\@deflabeltype{sss:mty-type}{subsection}
\new@anchor@label{sec253}{sss:mty-exn}{{11.10.2}{X}}
\@deflabeltype{sss:mty-exn}{subsection}
\new@anchor@label{sec254}{sss:mty-class}{{11.10.2}{X}}
\@deflabeltype{sss:mty-class}{subsection}
\new@anchor@label{sec255}{sss:mty-classtype}{{11.10.2}{X}}
\@deflabeltype{sss:mty-classtype}{subsection}
\new@anchor@label{sec256}{sss:mty-module}{{11.10.2}{X}}
\@deflabeltype{sss:mty-module}{subsection}
\new@anchor@label{sec257}{sss:mty-mty}{{11.10.2}{X}}
\@deflabeltype{sss:mty-mty}{subsection}
\new@anchor@label{sec258}{sss:mty-open}{{11.10.2}{X}}
\@deflabeltype{sss:mty-open}{subsection}
\new@anchor@label{sec259}{sss:mty-include}{{11.10.2}{X}}
\@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{sec260}{ss:mty-functors}{{11.10.3}{X}}
\@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{sec261}{ss:mty-with}{{11.10.4}{X}}
\@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{sec262}{s:module-expr}{{11.11}{X}}
\@deflabeltype{s:module-expr}{section}
\stx@exists{module-expr}\stx@exists{module-items}\stx@exists{definition}\@@addtocsec{htoc}{ss:mexpr-simple}{1}{\@print{11.11.1}\quad{}\label{ss:mexpr-simple}Simple module expressions{}}
\new@anchor@label{sec263}{ss:mexpr-simple}{{11.11.1}{X}}
\@deflabeltype{ss:mexpr-simple}{subsection}
\@@addtocsec{htoc}{ss:mexpr-structures}{1}{\@print{11.11.2}\quad{}\label{ss:mexpr-structures}Structures{}}
\new@anchor@label{sec264}{ss:mexpr-structures}{{11.11.2}{X}}
\@deflabeltype{ss:mexpr-structures}{subsection}
\new@anchor@label{sec265}{sss:mexpr-value-defs}{{11.11.2}{X}}
\@deflabeltype{sss:mexpr-value-defs}{subsection}
\new@anchor@label{sec266}{sss:mexpr-type-defs}{{11.11.2}{X}}
\@deflabeltype{sss:mexpr-type-defs}{subsection}
\new@anchor@label{sec267}{sss:mexpr-exn-defs}{{11.11.2}{X}}
\@deflabeltype{sss:mexpr-exn-defs}{subsection}
\new@anchor@label{sec268}{sss:mexpr-class-defs}{{11.11.2}{X}}
\@deflabeltype{sss:mexpr-class-defs}{subsection}
\new@anchor@label{sec269}{sss:mexpr-classtype-defs}{{11.11.2}{X}}
\@deflabeltype{sss:mexpr-classtype-defs}{subsection}
\new@anchor@label{sec270}{sss:mexpr-module-defs}{{11.11.2}{X}}
\@deflabeltype{sss:mexpr-module-defs}{subsection}
\new@anchor@label{sec271}{sss:mexpr-modtype-defs}{{11.11.2}{X}}
\@deflabeltype{sss:mexpr-modtype-defs}{subsection}
\new@anchor@label{sec272}{sss:mexpr-open}{{11.11.2}{X}}
\@deflabeltype{sss:mexpr-open}{subsection}
\new@anchor@label{sec273}{sss:mexpr-include}{{11.11.2}{X}}
\@deflabeltype{sss:mexpr-include}{subsection}
\@@addtocsec{htoc}{ss:mexpr-functors}{1}{\@print{11.11.3}\quad{}\label{ss:mexpr-functors}Functors{}}
\new@anchor@label{sec274}{ss:mexpr-functors}{{11.11.3}{X}}
\@deflabeltype{ss:mexpr-functors}{subsection}
\new@anchor@label{sec275}{sss:mexpr-functor-defs}{{11.11.3}{X}}
\@deflabeltype{sss:mexpr-functor-defs}{subsection}
\new@anchor@label{sec276}{sss:mexpr-functor-app}{{11.11.3}{X}}
\@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{sec277}{s:compilation-units}{{11.12}{X}}
\@deflabeltype{s:compilation-units}{section}
\stx@exists{unit-interface}\stx@exists{unit-implementation}\@@addtocsec{htoc}{sec278}{-1}{\@print{Chapter ‍12}\quad{}Language extensions{}}
\newlabel{c:extensions}{{12}{X}}
\@deflabeltype{c:extensions}{chapter}
\@@addtocsec{htoc}{s:letrecvalues}{0}{\@print{12.1}\quad{}\label{s:letrecvalues}Recursive definitions of values{}}
\new@anchor@label{sec279}{s:letrecvalues}{{12.1}{X}}
\@deflabeltype{s:letrecvalues}{section}
\@@addtocsec{htoc}{s:recursive-modules}{0}{\@print{12.2}\quad{}\label{s:recursive-modules}Recursive modules{}}
\new@anchor@label{sec280}{s:recursive-modules}{{12.2}{X}}
\@deflabeltype{s:recursive-modules}{section}
\@@addtocsec{htoc}{s:private-types}{0}{\@print{12.3}\quad{}\label{s:private-types}Private types{}}
\new@anchor@label{sec281}{s:private-types}{{12.3}{X}}
\@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{sec282}{ss:private-types-variant}{{12.3.1}{X}}
\@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{sec283}{ss:private-types-abbrev}{{12.3.2}{X}}
\@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{sec284}{ss:private-rows}{{12.3.3}{X}}
\@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{sec285}{s:locally-abstract}{{12.4}{X}}
\@deflabeltype{s:locally-abstract}{section}
\new@anchor@label{sec286}{p:polymorpic-locally-abstract}{{12.4}{X}}
\@deflabeltype{p:polymorpic-locally-abstract}{section}
\@@addtocsec{htoc}{s:first-class-modules}{0}{\@print{12.5}\quad{}\label{s:first-class-modules}First-class modules{}}
\new@anchor@label{sec287}{s:first-class-modules}{{12.5}{X}}
\@deflabeltype{s:first-class-modules}{section}
\stx@exists{package-type}\stx@exists{package-constraint}\new@anchor@label{sec288}{p:fst-mod-example}{{12.5}{X}}
\@deflabeltype{p:fst-mod-example}{section}
\new@anchor@label{sec289}{p:fst-mod-advexamples}{{12.5}{X}}
\@deflabeltype{p:fst-mod-advexamples}{section}
\@@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{sec290}{s:module-type-of}{{12.6}{X}}
\@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{sec291}{s:signature-substitution}{{12.7}{X}}
\@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{sec292}{ss:destructive-substitution}{{12.7.1}{X}}
\@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{sec293}{ss:local-substitution}{{12.7.2}{X}}
\@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{sec294}{ss:module-type-substitution}{{12.7.3}{X}}
\@deflabeltype{ss:module-type-substitution}{subsection}
\@@addtocsec{htoc}{s:module-alias}{0}{\@print{12.8}\quad{}\label{s:module-alias}Type-level module aliases{}}
\new@anchor@label{sec295}{s:module-alias}{{12.8}{X}}
\@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{sec296}{s:explicit-overriding-open}{{12.9}{X}}
\@deflabeltype{s:explicit-overriding-open}{section}
\@@addtocsec{htoc}{s:gadts}{0}{\@print{12.10}\quad{}\label{s:gadts}Generalized algebraic datatypes{}}
\new@anchor@label{sec297}{s:gadts}{{12.10}{X}}
\@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{sec298}{s:bigarray-access}{{12.11}{X}}
\@deflabeltype{s:bigarray-access}{section}
\@@addtocsec{htoc}{s:attributes}{0}{\@print{12.12}\quad{}\label{s:attributes}Attributes{}}
\new@anchor@label{sec299}{s:attributes}{{12.12}{X}}
\@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{sec300}{ss:builtin-attributes}{{12.12.1}{X}}
\@deflabeltype{ss:builtin-attributes}{subsection}
\@@addtocsec{htoc}{s:extension-nodes}{0}{\@print{12.13}\quad{}\label{s:extension-nodes}Extension nodes{}}
\new@anchor@label{sec301}{s:extension-nodes}{{12.13}{X}}
\@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{sec302}{ss:builtin-extension-nodes}{{12.13.1}{X}}
\@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{sec303}{s:extensible-variants}{{12.14}{X}}
\@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{sec304}{ss:private-extensible}{{12.14.1}{X}}
\@deflabeltype{ss:private-extensible}{subsection}
\@@addtocsec{htoc}{s:generative-functors}{0}{\@print{12.15}\quad{}\label{s:generative-functors}Generative functors{}}
\new@anchor@label{sec305}{s:generative-functors}{{12.15}{X}}
\@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{sec306}{s:extension-syntax}{{12.16}{X}}
\@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{sec307}{ss:extension-operators}{{12.16.1}{X}}
\@deflabeltype{ss:extension-operators}{subsection}
\newlabel{s:ext-ops}{{12.16.1}{X}}
\@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{sec308}{ss:extension-literals}{{12.16.2}{X}}
\@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{sec309}{s:inline-records}{{12.17}{X}}
\@deflabeltype{s:inline-records}{section}
\@@addtocsec{htoc}{s:doc-comments}{0}{\@print{12.18}\quad{}\label{s:doc-comments}Documentation comments{}}
\new@anchor@label{sec310}{s:doc-comments}{{12.18}{X}}
\@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{sec311}{ss:floating-comments}{{12.18.1}{X}}
\@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{sec312}{ss:item-comments}{{12.18.2}{X}}
\@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{sec313}{ss:label-comments}{{12.18.3}{X}}
\@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{sec314}{s:index-operators}{{12.19}{X}}
\@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{sec315}{ss:multiindexing}{{12.19.1}{X}}
\@deflabeltype{ss:multiindexing}{subsection}
\@@addtocsec{htoc}{s:empty-variants}{0}{\@print{12.20}\quad{}\label{s:empty-variants}Empty variant types{}}
\new@anchor@label{sec316}{s:empty-variants}{{12.20}{X}}
\@deflabeltype{s:empty-variants}{section}
\@@addtocsec{htoc}{s:alerts}{0}{\@print{12.21}\quad{}\label{s:alerts}Alerts{}}
\new@anchor@label{sec317}{s:alerts}{{12.21}{X}}
\@deflabeltype{s:alerts}{section}
\@@addtocsec{htoc}{s:generalized-open}{0}{\@print{12.22}\quad{}\label{s:generalized-open}Generalized open statements{}}
\new@anchor@label{sec318}{s:generalized-open}{{12.22}{X}}
\@deflabeltype{s:generalized-open}{section}
\@@addtocsec{htoc}{s:binding-operators}{0}{\@print{12.23}\quad{}\label{s:binding-operators}Binding operators{}}
\new@anchor@label{sec319}{s:binding-operators}{{12.23}{X}}
\@deflabeltype{s:binding-operators}{section}
\stx@exists{let-operator}\stx@exists{and-operator}\stx@exists{letop-binding}\@@addtocsec{htoc}{ss:letops-punning}{1}{\@print{12.23.1}\quad{}\label{ss:letops-punning}Short notation for variable bindings (let-punning){}}
\new@anchor@label{sec320}{ss:letops-punning}{{12.23.1}{X}}
\@deflabeltype{ss:letops-punning}{subsection}
\@@addtocsec{htoc}{ss:letops-rationale}{1}{\@print{12.23.2}\quad{}\label{ss:letops-rationale}Rationale{}}
\new@anchor@label{sec321}{ss:letops-rationale}{{12.23.2}{X}}
\@deflabeltype{ss:letops-rationale}{subsection}
\@@addtocsec{htoc}{s:effect-handlers}{0}{\@print{12.24}\quad{}\label{s:effect-handlers}Effect handlers{}}
\new@anchor@label{sec322}{s:effect-handlers}{{12.24}{X}}
\@deflabeltype{s:effect-handlers}{section}
\@@addtocsec{htoc}{s:effects-basics}{1}{\@print{12.24.1}\quad{}\label{s:effects-basics}Basics{}}
\new@anchor@label{sec323}{s:effects-basics}{{12.24.1}{X}}
\@deflabeltype{s:effects-basics}{subsection}
\@@addtocsec{htoc}{s:effects-concurrency}{1}{\@print{12.24.2}\quad{}\label{s:effects-concurrency}Concurrency{}}
\new@anchor@label{sec324}{s:effects-concurrency}{{12.24.2}{X}}
\@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{sec325}{s:effects-user-threads}{{12.24.3}{X}}
\@deflabeltype{s:effects-user-threads}{subsection}
\new@anchor@label{sec326}{s:effects-discontinue}{{12.24.3}{X}}
\@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{sec327}{s:effects-sequence}{{12.24.4}{X}}
\@deflabeltype{s:effects-sequence}{subsection}
\new@anchor@label{sec328}{s:effects-sequence-implementation}{{12.24.4}{X}}
\@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{sec329}{s:effects-semantics}{{12.24.5}{X}}
\@deflabeltype{s:effects-semantics}{subsection}
\new@anchor@label{sec330}{s:effects-nesting}{{12.24.5}{X}}
\@deflabeltype{s:effects-nesting}{subsection}
\new@anchor@label{sec331}{s:effects-fibers}{{12.24.5}{X}}
\@deflabeltype{s:effects-fibers}{subsection}
\new@anchor@label{sec332}{s:effects-unhandled}{{12.24.5}{X}}
\@deflabeltype{s:effects-unhandled}{subsection}
\new@anchor@label{sec333}{s:effects-linearity}{{12.24.5}{X}}
\@deflabeltype{s:effects-linearity}{subsection}
\@@addtocsec{htoc}{s:effects-shallow}{1}{\@print{12.24.6}\quad{}\label{s:effects-shallow}Shallow handlers{}}
\new@anchor@label{sec334}{s:effects-shallow}{{12.24.6}{X}}
\@deflabeltype{s:effects-shallow}{subsection}
\@@addtocsec{htoc}{sec335}{-2}{\@print{Part ‍III}\quad{}The OCaml tools{}}
\newlabel{p:commands}{{III}{X}}
\@deflabeltype{p:commands}{part}
\@@addtocsec{htoc}{sec336}{-1}{\@print{Chapter ‍13}\quad{}Batch compilation (ocamlc){}}
\newlabel{c:camlc}{{13}{X}}
\@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{sec337}{s:comp-overview}{{13.1}{X}}
\@deflabeltype{s:comp-overview}{section}
\@@addtocsec{htoc}{s:comp-options}{0}{\@print{13.2}\quad{}\label{s:comp-options}Options{}}
\new@anchor@label{sec338}{s:comp-options}{{13.2}{X}}
\@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{sec340}{s:modules-file-system}{{13.3}{X}}
\@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{sec341}{s:comp-errors}{{13.4}{X}}
\@deflabeltype{s:comp-errors}{section}
\@@addtocsec{htoc}{s:comp-warnings}{0}{\@print{13.5}\quad{}\label{s:comp-warnings}Warning reference{}}
\new@anchor@label{sec342}{s:comp-warnings}{{13.5}{X}}
\@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{sec343}{ss:warn6}{{13.5.1}{X}}
\@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{sec344}{ss:warn9}{{13.5.2}{X}}
\@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{sec345}{ss:warn52}{{13.5.3}{X}}
\@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{sec346}{ss:warn57}{{13.5.4}{X}}
\@deflabeltype{ss:warn57}{subsection}
\@@addtocsec{htoc}{sec347}{-1}{\@print{Chapter ‍14}\quad{}The toplevel system or REPL (ocaml){}}
\newlabel{c:camllight}{{14}{X}}
\@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{sec348}{s:toplevel-options}{{14.1}{X}}
\@deflabeltype{s:toplevel-options}{section}
\@@addtocsec{htoc}{s:toplevel-directives}{0}{\@print{14.2}\quad{}\label{s:toplevel-directives}Toplevel directives{}}
\new@anchor@label{sec349}{s:toplevel-directives}{{14.2}{X}}
\@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{sec350}{s:toplevel-modules}{{14.3}{X}}
\@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{sec351}{s:toplevel-common-errors}{{14.4}{X}}
\@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{sec352}{s:custom-toplevel}{{14.5}{X}}
\@deflabeltype{s:custom-toplevel}{section}
\@@addtocsec{htoc}{ss:ocamlmktop-options}{1}{\@print{14.5.1}\quad{}\label{ss:ocamlmktop-options}Options{}}
\new@anchor@label{sec353}{ss:ocamlmktop-options}{{14.5.1}{X}}
\@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{sec354}{s:ocamlnat}{{14.6}{X}}
\@deflabeltype{s:ocamlnat}{section}
\@@addtocsec{htoc}{sec355}{-1}{\@print{Chapter ‍15}\quad{}The runtime system (ocamlrun){}}
\newlabel{c:runtime}{{15}{X}}
\@deflabeltype{c:runtime}{chapter}
\@@addtocsec{htoc}{s:ocamlrun-overview}{0}{\@print{15.1}\quad{}\label{s:ocamlrun-overview}Overview{}}
\new@anchor@label{sec356}{s:ocamlrun-overview}{{15.1}{X}}
\@deflabeltype{s:ocamlrun-overview}{section}
\@@addtocsec{htoc}{s:ocamlrun-options}{0}{\@print{15.2}\quad{}\label{s:ocamlrun-options}Options{}}
\new@anchor@label{sec357}{s:ocamlrun-options}{{15.2}{X}}
\@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{sec358}{s:ocamlrun-dllpath}{{15.3}{X}}
\@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{sec359}{s:ocamlrun-common-errors}{{15.4}{X}}
\@deflabeltype{s:ocamlrun-common-errors}{section}
\@@addtocsec{htoc}{sec360}{-1}{\@print{Chapter ‍16}\quad{}Native-code compilation (ocamlopt){}}
\newlabel{c:nativecomp}{{16}{X}}
\@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{sec361}{s:native-overview}{{16.1}{X}}
\@deflabeltype{s:native-overview}{section}
\@@addtocsec{htoc}{s:native-options}{0}{\@print{16.2}\quad{}\label{s:native-options}Options{}}
\new@anchor@label{sec362}{s:native-options}{{16.2}{X}}
\@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{sec367}{s:native-common-errors}{{16.3}{X}}
\@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{sec368}{s:native:running-executable}{{16.4}{X}}
\@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{sec369}{s:compat-native-bytecode}{{16.5}{X}}
\@deflabeltype{s:compat-native-bytecode}{section}
\@@addtocsec{htoc}{sec370}{-1}{\@print{Chapter ‍17}\quad{}Lexer and parser generators (ocamllex, ocamlyacc){}}
\newlabel{c:ocamlyacc}{{17}{X}}
\@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{sec371}{s:ocamllex-overview}{{17.1}{X}}
\@deflabeltype{s:ocamllex-overview}{section}
\@@addtocsec{htoc}{ss:ocamllex-options}{1}{\@print{17.1.1}\quad{}\label{ss:ocamllex-options}Options{}}
\new@anchor@label{sec372}{ss:ocamllex-options}{{17.1.1}{X}}
\@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{sec373}{s:ocamllex-syntax}{{17.2}{X}}
\@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{sec374}{ss:ocamllex-header-trailer}{{17.2.1}{X}}
\@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{sec375}{ss:ocamllex-named-regexp}{{17.2.2}{X}}
\@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{sec376}{ss:ocamllex-entry-points}{{17.2.3}{X}}
\@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{sec377}{ss:ocamllex-regexp}{{17.2.4}{X}}
\@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{sec378}{ss:ocamllex-actions}{{17.2.5}{X}}
\@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{sec379}{ss:ocamllex-variables}{{17.2.6}{X}}
\@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{sec380}{ss:refill-handlers}{{17.2.7}{X}}
\@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{sec381}{ss:ocamllex-reserved-ident}{{17.2.8}{X}}
\@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{sec382}{s:ocamlyacc-overview}{{17.3}{X}}
\@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{sec383}{s:ocamlyacc-syntax}{{17.4}{X}}
\@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{sec384}{ss:ocamlyacc-header-trailer}{{17.4.1}{X}}
\@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{sec385}{ss:ocamlyacc-declarations}{{17.4.2}{X}}
\@deflabeltype{ss:ocamlyacc-declarations}{subsection}
\@@addtocsec{htoc}{ss:ocamlyacc-rules}{1}{\@print{17.4.3}\quad{}\label{ss:ocamlyacc-rules}Rules{}}
\new@anchor@label{sec386}{ss:ocamlyacc-rules}{{17.4.3}{X}}
\@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{sec387}{ss:ocamlyacc-error-handling}{{17.4.4}{X}}
\@deflabeltype{ss:ocamlyacc-error-handling}{subsection}
\@@addtocsec{htoc}{s:ocamlyacc-options}{0}{\@print{17.5}\quad{}\label{s:ocamlyacc-options}Options{}}
\new@anchor@label{sec388}{s:ocamlyacc-options}{{17.5}{X}}
\@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{sec389}{s:lexyacc-example}{{17.6}{X}}
\@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{sec390}{s:lexyacc-common-errors}{{17.7}{X}}
\@deflabeltype{s:lexyacc-common-errors}{section}
\@@addtocsec{htoc}{sec391}{-1}{\@print{Chapter ‍18}\quad{}Dependency generator (ocamldep){}}
\newlabel{c:camldep}{{18}{X}}
\@deflabeltype{c:camldep}{chapter}
\@@addtocsec{htoc}{s:ocamldep-options}{0}{\@print{18.1}\quad{}\label{s:ocamldep-options}Options{}}
\new@anchor@label{sec392}{s:ocamldep-options}{{18.1}{X}}
\@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{sec393}{s:ocamldep-makefile}{{18.2}{X}}
\@deflabeltype{s:ocamldep-makefile}{section}
\@@addtocsec{htoc}{sec394}{-1}{\@print{Chapter ‍19}\quad{}The documentation generator (ocamldoc){}}
\newlabel{c:ocamldoc}{{19}{X}}
\@deflabeltype{c:ocamldoc}{chapter}
\@@addtocsec{htoc}{s:ocamldoc-usage}{0}{\@print{19.1}\quad{}\label{s:ocamldoc-usage}Usage{}}
\new@anchor@label{sec395}{s:ocamldoc-usage}{{19.1}{X}}
\@deflabeltype{s:ocamldoc-usage}{section}
\@@addtocsec{htoc}{ss:ocamldoc-invocation}{1}{\@print{19.1.1}\quad{}\label{ss:ocamldoc-invocation}Invocation{}}
\new@anchor@label{sec396}{ss:ocamldoc-invocation}{{19.1.1}{X}}
\@deflabeltype{ss:ocamldoc-invocation}{subsection}
\new@anchor@label{sec397}{sss:ocamldoc-output}{{19.1.1}{X}}
\@deflabeltype{sss:ocamldoc-output}{subsection}
\new@anchor@label{sec398}{sss:ocamldoc-options}{{19.1.1}{X}}
\@deflabeltype{sss:ocamldoc-options}{subsection}
\new@anchor@label{sec399}{sss:ocamldoc-type-checking}{{19.1.1}{X}}
\@deflabeltype{sss:ocamldoc-type-checking}{subsection}
\new@anchor@label{sec400}{sss:ocamldoc-html}{{19.1.1}{X}}
\@deflabeltype{sss:ocamldoc-html}{subsection}
\new@anchor@label{sec401}{sss:ocamldoc-latex}{{19.1.1}{X}}
\@deflabeltype{sss:ocamldoc-latex}{subsection}
\new@anchor@label{sec402}{sss:ocamldoc-info}{{19.1.1}{X}}
\@deflabeltype{sss:ocamldoc-info}{subsection}
\new@anchor@label{sec403}{sss:ocamldoc-dot}{{19.1.1}{X}}
\@deflabeltype{sss:ocamldoc-dot}{subsection}
\new@anchor@label{sec404}{sss:ocamldoc-man}{{19.1.1}{X}}
\@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{sec405}{ss:ocamldoc-merge}{{19.1.2}{X}}
\@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{sec406}{ss:ocamldoc-rules}{{19.1.3}{X}}
\@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{sec407}{s:ocamldoc-comments}{{19.2}{X}}
\@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{sec408}{ss:ocamldoc-placement}{{19.2.1}{X}}
\@deflabeltype{ss:ocamldoc-placement}{subsection}
\new@anchor@label{sec409}{sss:ocamldoc-mli}{{19.2.1}{X}}
\@deflabeltype{sss:ocamldoc-mli}{subsection}
\new@anchor@label{sec410}{sss:ocamldoc-comments-ml}{{19.2.1}{X}}
\@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{sec411}{ss:ocamldoc-stop}{{19.2.2}{X}}
\@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{sec412}{ss:ocamldoc-syntax}{{19.2.3}{X}}
\@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{sec413}{ss:ocamldoc-formatting}{{19.2.4}{X}}
\@deflabeltype{ss:ocamldoc-formatting}{subsection}
\stx@exists{text}\stx@exists{inline-text}\stx@exists{text-element}\stx@exists{inline-text-element}\new@anchor@label{sec414}{sss:ocamldoc-list}{{19.2.4.1}{X}}
\@deflabeltype{sss:ocamldoc-list}{subsubsection}
\stx@exists{list}\new@anchor@label{sec415}{sss:ocamldoc-crossref}{{19.2.4.2}{X}}
\@deflabeltype{sss:ocamldoc-crossref}{subsubsection}
\new@anchor@label{sec416}{sss:ocamldoc-preamble}{{19.2.4.3}{X}}
\@deflabeltype{sss:ocamldoc-preamble}{subsubsection}
\new@anchor@label{sec417}{sss:ocamldoc-target-specific-syntax}{{19.2.4.4}{X}}
\@deflabeltype{sss:ocamldoc-target-specific-syntax}{subsubsection}
\new@anchor@label{sec418}{sss:ocamldoc-html-tags}{{19.2.4.5}{X}}
\@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{sec419}{ss:ocamldoc-tags}{{19.2.5}{X}}
\@deflabeltype{ss:ocamldoc-tags}{subsection}
\new@anchor@label{sec420}{sss:ocamldoc-builtin-tags}{{19.2.5}{X}}
\@deflabeltype{sss:ocamldoc-builtin-tags}{subsection}
\new@anchor@label{sec421}{sss:ocamldoc-custom-tags}{{19.2.5}{X}}
\@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{sec422}{s:ocamldoc-custom-generators}{{19.3}{X}}
\@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{sec423}{ss:ocamldoc-generators}{{19.3.1}{X}}
\@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{sec424}{ss:ocamldoc-handling-custom-tags}{{19.3.2}{X}}
\@deflabeltype{ss:ocamldoc-handling-custom-tags}{subsection}
\new@anchor@label{sec425}{sss:ocamldoc-html-generator}{{19.3.2}{X}}
\@deflabeltype{sss:ocamldoc-html-generator}{subsection}
\new@anchor@label{sec426}{sss:ocamldoc-other-generators}{{19.3.2}{X}}
\@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{sec427}{s:ocamldoc-adding-flags}{{19.4}{X}}
\@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{sec428}{ss:ocamldoc-compilation-and-usage}{{19.4.1}{X}}
\@deflabeltype{ss:ocamldoc-compilation-and-usage}{subsection}
\new@anchor@label{sec429}{sss:ocamldoc-generator-class}{{19.4.1}{X}}
\@deflabeltype{sss:ocamldoc-generator-class}{subsection}
\new@anchor@label{sec430}{sss:ocamldoc-modular-generator}{{19.4.1}{X}}
\@deflabeltype{sss:ocamldoc-modular-generator}{subsection}
\@@addtocsec{htoc}{sec431}{-1}{\@print{Chapter ‍20}\quad{}The debugger (ocamldebug){}}
\newlabel{c:debugger}{{20}{X}}
\@deflabeltype{c:debugger}{chapter}
\@@addtocsec{htoc}{s:debugger-compilation}{0}{\@print{20.1}\quad{}\label{s:debugger-compilation}Compiling for debugging{}}
\new@anchor@label{sec432}{s:debugger-compilation}{{20.1}{X}}
\@deflabeltype{s:debugger-compilation}{section}
\@@addtocsec{htoc}{s:debugger-invocation}{0}{\@print{20.2}\quad{}\label{s:debugger-invocation}Invocation{}}
\new@anchor@label{sec433}{s:debugger-invocation}{{20.2}{X}}
\@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{sec434}{ss:debugger-start}{{20.2.1}{X}}
\@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{sec435}{ss:debugger-init-file}{{20.2.2}{X}}
\@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{sec436}{ss:debugger-exut}{{20.2.3}{X}}
\@deflabeltype{ss:debugger-exut}{subsection}
\@@addtocsec{htoc}{s:debugger-commands}{0}{\@print{20.3}\quad{}\label{s:debugger-commands}Commands{}}
\new@anchor@label{sec437}{s:debugger-commands}{{20.3}{X}}
\@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{sec438}{ss:debugger-help}{{20.3.1}{X}}
\@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{sec439}{ss:debugger-state}{{20.3.2}{X}}
\@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{sec440}{s:debugger-execution}{{20.4}{X}}
\@deflabeltype{s:debugger-execution}{section}
\@@addtocsec{htoc}{ss:debugger-events}{1}{\@print{20.4.1}\quad{}\label{ss:debugger-events}Events{}}
\new@anchor@label{sec441}{ss:debugger-events}{{20.4.1}{X}}
\@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{sec442}{ss:debugger-starting-program}{{20.4.2}{X}}
\@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{sec443}{ss:debugger-running}{{20.4.3}{X}}
\@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{sec444}{ss:debugger-time-travel}{{20.4.4}{X}}
\@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{sec445}{ss:debugger-kill}{{20.4.5}{X}}
\@deflabeltype{ss:debugger-kill}{subsection}
\@@addtocsec{htoc}{s:breakpoints}{0}{\@print{20.5}\quad{}\label{s:breakpoints}Breakpoints{}}
\new@anchor@label{sec446}{s:breakpoints}{{20.5}{X}}
\@deflabeltype{s:breakpoints}{section}
\@@addtocsec{htoc}{s:debugger-callstack}{0}{\@print{20.6}\quad{}\label{s:debugger-callstack}The call stack{}}
\new@anchor@label{sec447}{s:debugger-callstack}{{20.6}{X}}
\@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{sec448}{s:debugger-examining-values}{{20.7}{X}}
\@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{sec449}{s:debugger-control}{{20.8}{X}}
\@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{sec450}{ss:debugger-name-and-arguments}{{20.8.1}{X}}
\@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{sec451}{ss:debugger-loading}{{20.8.2}{X}}
\@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{sec452}{ss:debugger-search-path}{{20.8.3}{X}}
\@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{sec453}{ss:debugger-working-dir}{{20.8.4}{X}}
\@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{sec454}{ss:debugger-reverse-execution}{{20.8.5}{X}}
\@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{sec455}{ss:debugger-fork}{{20.8.6}{X}}
\@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{sec456}{ss:debugger-stop-at-new-load}{{20.8.7}{X}}
\@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{sec457}{ss:debugger-communication}{{20.8.8}{X}}
\@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{sec458}{ss:debugger-fine-tuning}{{20.8.9}{X}}
\@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{sec459}{ss:debugger-printers}{{20.8.10}{X}}
\@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{sec460}{s:debugger-misc-cmds}{{20.9}{X}}
\@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{sec461}{s:inf-debugger}{{20.10}{X}}
\@deflabeltype{s:inf-debugger}{section}
\@@addtocsec{htoc}{sec462}{-1}{\@print{Chapter ‍21}\quad{}Profiling (ocamlprof){}}
\newlabel{c:profiler}{{21}{X}}
\@deflabeltype{c:profiler}{chapter}
\@@addtocsec{htoc}{s:ocamlprof-compiling}{0}{\@print{21.1}\quad{}\label{s:ocamlprof-compiling}Compiling for profiling{}}
\new@anchor@label{sec463}{s:ocamlprof-compiling}{{21.1}{X}}
\@deflabeltype{s:ocamlprof-compiling}{section}
\new@anchor@label{sec464}{p:ocamlprof-warning}{{21.1}{X}}
\@deflabeltype{p:ocamlprof-warning}{section}
\new@anchor@label{sec465}{p:ocamlprof-reserved}{{21.1}{X}}
\@deflabeltype{p:ocamlprof-reserved}{section}
\@@addtocsec{htoc}{s:ocamlprof-profiling}{0}{\@print{21.2}\quad{}\label{s:ocamlprof-profiling}Profiling an execution{}}
\new@anchor@label{sec467}{s:ocamlprof-profiling}{{21.2}{X}}
\@deflabeltype{s:ocamlprof-profiling}{section}
\@@addtocsec{htoc}{s:ocamlprof-printing}{0}{\@print{21.3}\quad{}\label{s:ocamlprof-printing}Printing profiling information{}}
\new@anchor@label{sec468}{s:ocamlprof-printing}{{21.3}{X}}
\@deflabeltype{s:ocamlprof-printing}{section}
\@@addtocsec{htoc}{s:ocamlprof-time-profiling}{0}{\@print{21.4}\quad{}\label{s:ocamlprof-time-profiling}Time profiling{}}
\new@anchor@label{sec469}{s:ocamlprof-time-profiling}{{21.4}{X}}
\@deflabeltype{s:ocamlprof-time-profiling}{section}
\@@addtocsec{htoc}{c:intf-c}{-1}{\@print{Chapter ‍22}\quad{}Interfacing\label{c:intf-c} C with OCaml{}}
\new@anchor@label{sec470}{c:intf-c}{{22}{X}}
\@deflabeltype{c:intf-c}{chapter}
\@@addtocsec{htoc}{s:c-overview}{0}{\@print{22.1}\quad{}\label{s:c-overview}Overview and compilation information{}}
\new@anchor@label{sec471}{s:c-overview}{{22.1}{X}}
\@deflabeltype{s:c-overview}{section}
\@@addtocsec{htoc}{ss:c-prim-decl}{1}{\@print{22.1.1}\quad{}\label{ss:c-prim-decl}Declaring primitives{}}
\new@anchor@label{sec472}{ss:c-prim-decl}{{22.1.1}{X}}
\@deflabeltype{ss:c-prim-decl}{subsection}
\stx@exists{external-declaration}\@@addtocsec{htoc}{ss:c-prim-impl}{1}{\@print{22.1.2}\quad{}\label{ss:c-prim-impl}Implementing primitives{}}
\new@anchor@label{sec473}{ss:c-prim-impl}{{22.1.2}{X}}
\@deflabeltype{ss:c-prim-impl}{subsection}
\@@addtocsec{htoc}{ss:staticlink-c-code}{1}{\@print{22.1.3}\quad{}\label{ss:staticlink-c-code}Statically linking C code with OCaml code{}}
\new@anchor@label{sec474}{ss:staticlink-c-code}{{22.1.3}{X}}
\@deflabeltype{ss:staticlink-c-code}{subsection}
\@@addtocsec{htoc}{ss:dynlink-c-code}{1}{\@print{22.1.4}\quad{}\label{ss:dynlink-c-code}Dynamically linking C code with OCaml code{}}
\new@anchor@label{sec475}{ss:dynlink-c-code}{{22.1.4}{X}}
\@deflabeltype{ss:dynlink-c-code}{subsection}
\@@addtocsec{htoc}{ss:c-static-vs-dynamic}{1}{\@print{22.1.5}\quad{}\label{ss:c-static-vs-dynamic}Choosing between static linking and dynamic linking{}}
\new@anchor@label{sec476}{ss:c-static-vs-dynamic}{{22.1.5}{X}}
\@deflabeltype{ss:c-static-vs-dynamic}{subsection}
\@@addtocsec{htoc}{ss:custom-runtime}{1}{\@print{22.1.6}\quad{}\label{ss:custom-runtime}Building standalone custom runtime systems{}}
\new@anchor@label{sec477}{ss:custom-runtime}{{22.1.6}{X}}
\@deflabeltype{ss:custom-runtime}{subsection}
\@@addtocsec{htoc}{s:c-value}{0}{\@print{22.2}\quad{}\label{s:c-value}The \texttt{value} type{}}
\new@anchor@label{sec478}{s:c-value}{{22.2}{X}}
\@deflabeltype{s:c-value}{section}
\@@addtocsec{htoc}{ss:c-int}{1}{\@print{22.2.1}\quad{}\label{ss:c-int}Integer values{}}
\new@anchor@label{sec479}{ss:c-int}{{22.2.1}{X}}
\@deflabeltype{ss:c-int}{subsection}
\@@addtocsec{htoc}{ss:c-blocks}{1}{\@print{22.2.2}\quad{}\label{ss:c-blocks}Blocks{}}
\new@anchor@label{sec480}{ss:c-blocks}{{22.2.2}{X}}
\@deflabeltype{ss:c-blocks}{subsection}
\@@addtocsec{htoc}{ss:c-outside-head}{1}{\@print{22.2.3}\quad{}\label{ss:c-outside-head}Pointers outside the heap{}}
\new@anchor@label{sec481}{ss:c-outside-head}{{22.2.3}{X}}
\@deflabeltype{ss:c-outside-head}{subsection}
\@@addtocsec{htoc}{s:c-ocaml-datatype-repr}{0}{\@print{22.3}\quad{}\label{s:c-ocaml-datatype-repr}Representation of OCaml data types{}}
\new@anchor@label{sec482}{s:c-ocaml-datatype-repr}{{22.3}{X}}
\@deflabeltype{s:c-ocaml-datatype-repr}{section}
\@@addtocsec{htoc}{ss:c-atomic}{1}{\@print{22.3.1}\quad{}\label{ss:c-atomic}Atomic types{}}
\new@anchor@label{sec483}{ss:c-atomic}{{22.3.1}{X}}
\@deflabeltype{ss:c-atomic}{subsection}
\@@addtocsec{htoc}{ss:c-tuples-and-records}{1}{\@print{22.3.2}\quad{}\label{ss:c-tuples-and-records}Tuples and records{}}
\new@anchor@label{sec484}{ss:c-tuples-and-records}{{22.3.2}{X}}
\@deflabeltype{ss:c-tuples-and-records}{subsection}
\@@addtocsec{htoc}{ss:c-arrays}{1}{\@print{22.3.3}\quad{}\label{ss:c-arrays}Arrays{}}
\new@anchor@label{sec485}{ss:c-arrays}{{22.3.3}{X}}
\@deflabeltype{ss:c-arrays}{subsection}
\@@addtocsec{htoc}{ss:c-concrete-datatypes}{1}{\@print{22.3.4}\quad{}\label{ss:c-concrete-datatypes}Concrete data types{}}
\new@anchor@label{sec486}{ss:c-concrete-datatypes}{{22.3.4}{X}}
\@deflabeltype{ss:c-concrete-datatypes}{subsection}
\@@addtocsec{htoc}{ss:c-objects}{1}{\@print{22.3.5}\quad{}\label{ss:c-objects}Objects{}}
\new@anchor@label{sec487}{ss:c-objects}{{22.3.5}{X}}
\@deflabeltype{ss:c-objects}{subsection}
\@@addtocsec{htoc}{ss:c-polyvar}{1}{\@print{22.3.6}\quad{}\label{ss:c-polyvar}Polymorphic variants{}}
\new@anchor@label{sec488}{ss:c-polyvar}{{22.3.6}{X}}
\@deflabeltype{ss:c-polyvar}{subsection}
\@@addtocsec{htoc}{s:c-ops-on-values}{0}{\@print{22.4}\quad{}\label{s:c-ops-on-values}Operations on values{}}
\new@anchor@label{sec489}{s:c-ops-on-values}{{22.4}{X}}
\@deflabeltype{s:c-ops-on-values}{section}
\@@addtocsec{htoc}{ss:c-kind-tests}{1}{\@print{22.4.1}\quad{}\label{ss:c-kind-tests}Kind tests{}}
\new@anchor@label{sec490}{ss:c-kind-tests}{{22.4.1}{X}}
\@deflabeltype{ss:c-kind-tests}{subsection}
\@@addtocsec{htoc}{ss:c-int-ops}{1}{\@print{22.4.2}\quad{}\label{ss:c-int-ops}Operations on integers{}}
\new@anchor@label{sec491}{ss:c-int-ops}{{22.4.2}{X}}
\@deflabeltype{ss:c-int-ops}{subsection}
\@@addtocsec{htoc}{ss:c-block-access}{1}{\@print{22.4.3}\quad{}\label{ss:c-block-access}Accessing blocks{}}
\new@anchor@label{sec492}{ss:c-block-access}{{22.4.3}{X}}
\@deflabeltype{ss:c-block-access}{subsection}
\@@addtocsec{htoc}{ss:c-block-allocation}{1}{\@print{22.4.4}\quad{}\label{ss:c-block-allocation}Allocating blocks{}}
\new@anchor@label{sec493}{ss:c-block-allocation}{{22.4.4}{X}}
\@deflabeltype{ss:c-block-allocation}{subsection}
\new@anchor@label{sec494}{sss:c-simple-allocation}{{22.4.4}{X}}
\@deflabeltype{sss:c-simple-allocation}{subsection}
\new@anchor@label{sec495}{sss:c-low-level-alloc}{{22.4.4}{X}}
\@deflabeltype{sss:c-low-level-alloc}{subsection}
\@@addtocsec{htoc}{ss:c-exceptions}{1}{\@print{22.4.5}\quad{}\label{ss:c-exceptions}Raising exceptions{}}
\new@anchor@label{sec496}{ss:c-exceptions}{{22.4.5}{X}}
\@deflabeltype{ss:c-exceptions}{subsection}
\@@addtocsec{htoc}{s:c-gc-harmony}{0}{\@print{22.5}\quad{}\label{s:c-gc-harmony}Living in harmony with the garbage collector{}}
\new@anchor@label{sec497}{s:c-gc-harmony}{{22.5}{X}}
\@deflabeltype{s:c-gc-harmony}{section}
\@@addtocsec{htoc}{ss:c-simple-gc-harmony}{1}{\@print{22.5.1}\quad{}\label{ss:c-simple-gc-harmony}Simple interface{}}
\new@anchor@label{sec498}{ss:c-simple-gc-harmony}{{22.5.1}{X}}
\@deflabeltype{ss:c-simple-gc-harmony}{subsection}
\@@addtocsec{htoc}{ss:c-low-level-gc-harmony}{1}{\@print{22.5.2}\quad{}\label{ss:c-low-level-gc-harmony}Low-level interface{}}
\new@anchor@label{sec504}{ss:c-low-level-gc-harmony}{{22.5.2}{X}}
\@deflabeltype{ss:c-low-level-gc-harmony}{subsection}
\@@addtocsec{htoc}{ss:c-process-pending-actions}{1}{\@print{22.5.3}\quad{}\label{ss:c-process-pending-actions}Pending actions and asynchronous exceptions{}}
\new@anchor@label{sec505}{ss:c-process-pending-actions}{{22.5.3}{X}}
\@deflabeltype{ss:c-process-pending-actions}{subsection}
\@@addtocsec{htoc}{s:c-intf-example}{0}{\@print{22.6}\quad{}\label{s:c-intf-example}A complete example{}}
\new@anchor@label{sec506}{s:c-intf-example}{{22.6}{X}}
\@deflabeltype{s:c-intf-example}{section}
\@@addtocsec{htoc}{s:c-callback}{0}{\@print{22.7}\quad{}\label{s:c-callback}Advanced topic: callbacks from C to OCaml{}}
\new@anchor@label{sec507}{s:c-callback}{{22.7}{X}}
\@deflabeltype{s:c-callback}{section}
\@@addtocsec{htoc}{ss:c-callbacks}{1}{\@print{22.7.1}\quad{}\label{ss:c-callbacks}Applying OCaml closures from C{}}
\new@anchor@label{sec508}{ss:c-callbacks}{{22.7.1}{X}}
\@deflabeltype{ss:c-callbacks}{subsection}
\@@addtocsec{htoc}{ss:c-closures}{1}{\@print{22.7.2}\quad{}\label{ss:c-closures}Obtaining or registering OCaml closures for use in C functions{}}
\new@anchor@label{sec510}{ss:c-closures}{{22.7.2}{X}}
\@deflabeltype{ss:c-closures}{subsection}
\@@addtocsec{htoc}{ss:c-register-exn}{1}{\@print{22.7.3}\quad{}\label{ss:c-register-exn}Registering OCaml exceptions for use in C functions{}}
\new@anchor@label{sec511}{ss:c-register-exn}{{22.7.3}{X}}
\@deflabeltype{ss:c-register-exn}{subsection}
\@@addtocsec{htoc}{ss:main-c}{1}{\@print{22.7.4}\quad{}\label{ss:main-c}Main program in C{}}
\new@anchor@label{sec512}{ss:main-c}{{22.7.4}{X}}
\@deflabeltype{ss:main-c}{subsection}
\@@addtocsec{htoc}{ss:c-embedded-code}{1}{\@print{22.7.5}\quad{}\label{ss:c-embedded-code}Embedding the OCaml code in the C code{}}
\new@anchor@label{sec513}{ss:c-embedded-code}{{22.7.5}{X}}
\@deflabeltype{ss:c-embedded-code}{subsection}
\@@addtocsec{htoc}{s:c-advexample}{0}{\@print{22.8}\quad{}\label{s:c-advexample}Advanced example with callbacks{}}
\new@anchor@label{sec518}{s:c-advexample}{{22.8}{X}}
\@deflabeltype{s:c-advexample}{section}
\@@addtocsec{htoc}{s:c-custom}{0}{\@print{22.9}\quad{}\label{s:c-custom}Advanced topic: custom blocks{}}
\new@anchor@label{sec519}{s:c-custom}{{22.9}{X}}
\@deflabeltype{s:c-custom}{section}
\@@addtocsec{htoc}{ss:c-custom-ops}{1}{\@print{22.9.1}\quad{}\label{ss:c-custom-ops}The {\machine{struct\ custom{\char95}operations}}{}}
\new@anchor@label{sec520}{ss:c-custom-ops}{{22.9.1}{X}}
\@deflabeltype{ss:c-custom-ops}{subsection}
\@@addtocsec{htoc}{ss:c-custom-alloc}{1}{\@print{22.9.2}\quad{}\label{ss:c-custom-alloc}Allocating custom blocks{}}
\new@anchor@label{sec521}{ss:c-custom-alloc}{{22.9.2}{X}}
\@deflabeltype{ss:c-custom-alloc}{subsection}
\@@addtocsec{htoc}{ss:c-custom-access}{1}{\@print{22.9.3}\quad{}\label{ss:c-custom-access}Accessing custom blocks{}}
\new@anchor@label{sec522}{ss:c-custom-access}{{22.9.3}{X}}
\@deflabeltype{ss:c-custom-access}{subsection}
\@@addtocsec{htoc}{ss:c-custom-serialization}{1}{\@print{22.9.4}\quad{}\label{ss:c-custom-serialization}Writing custom serialization and deserialization functions{}}
\new@anchor@label{sec523}{ss:c-custom-serialization}{{22.9.4}{X}}
\@deflabeltype{ss:c-custom-serialization}{subsection}
\@@addtocsec{htoc}{ss:c-custom-idents}{1}{\@print{22.9.5}\quad{}\label{ss:c-custom-idents}Choosing identifiers{}}
\new@anchor@label{sec524}{ss:c-custom-idents}{{22.9.5}{X}}
\@deflabeltype{ss:c-custom-idents}{subsection}
\@@addtocsec{htoc}{ss:c-finalized}{1}{\@print{22.9.6}\quad{}\label{ss:c-finalized}Finalized blocks{}}
\new@anchor@label{sec525}{ss:c-finalized}{{22.9.6}{X}}
\@deflabeltype{ss:c-finalized}{subsection}
\@@addtocsec{htoc}{s:C-Bigarrays}{0}{\@print{22.10}\quad{}\label{s:C-Bigarrays}Advanced topic: Bigarrays and the OCaml-C interface{}}
\new@anchor@label{sec526}{s:C-Bigarrays}{{22.10}{X}}
\@deflabeltype{s:C-Bigarrays}{section}
\@@addtocsec{htoc}{ss:C-Bigarrays-include}{1}{\@print{22.10.1}\quad{}\label{ss:C-Bigarrays-include}Include file{}}
\new@anchor@label{sec527}{ss:C-Bigarrays-include}{{22.10.1}{X}}
\@deflabeltype{ss:C-Bigarrays-include}{subsection}
\@@addtocsec{htoc}{ss:C-Bigarrays-access}{1}{\@print{22.10.2}\quad{}\label{ss:C-Bigarrays-access}Accessing an OCaml bigarray from C or Fortran{}}
\new@anchor@label{sec528}{ss:C-Bigarrays-access}{{22.10.2}{X}}
\@deflabeltype{ss:C-Bigarrays-access}{subsection}
\@@addtocsec{htoc}{ss:C-Bigarrays-wrap}{1}{\@print{22.10.3}\quad{}\label{ss:C-Bigarrays-wrap}Wrapping a C or Fortran array as an OCaml Bigarray{}}
\new@anchor@label{sec530}{ss:C-Bigarrays-wrap}{{22.10.3}{X}}
\@deflabeltype{ss:C-Bigarrays-wrap}{subsection}
\@@addtocsec{htoc}{s:C-cheaper-call}{0}{\@print{22.11}\quad{}\label{s:C-cheaper-call}Advanced topic: cheaper C call{}}
\new@anchor@label{sec531}{s:C-cheaper-call}{{22.11}{X}}
\@deflabeltype{s:C-cheaper-call}{section}
\@@addtocsec{htoc}{ss:c-unboxed}{1}{\@print{22.11.1}\quad{}\label{ss:c-unboxed}Passing unboxed values{}}
\new@anchor@label{sec532}{ss:c-unboxed}{{22.11.1}{X}}
\@deflabeltype{ss:c-unboxed}{subsection}
\@@addtocsec{htoc}{ss:c-direct-call}{1}{\@print{22.11.2}\quad{}\label{ss:c-direct-call}Direct C call{}}
\new@anchor@label{sec533}{ss:c-direct-call}{{22.11.2}{X}}
\@deflabeltype{ss:c-direct-call}{subsection}
\@@addtocsec{htoc}{ss:c-direct-call-example}{1}{\@print{22.11.3}\quad{}\label{ss:c-direct-call-example}Example: calling C library functions without indirection{}}
\new@anchor@label{sec534}{ss:c-direct-call-example}{{22.11.3}{X}}
\@deflabeltype{ss:c-direct-call-example}{subsection}
\@@addtocsec{htoc}{s:C-multithreading}{0}{\@print{22.12}\quad{}\label{s:C-multithreading}Advanced topic: multithreading{}}
\new@anchor@label{sec535}{s:C-multithreading}{{22.12}{X}}
\@deflabeltype{s:C-multithreading}{section}
\@@addtocsec{htoc}{ss:c-thread-register}{1}{\@print{22.12.1}\quad{}\label{ss:c-thread-register}Registering threads created from C{}}
\new@anchor@label{sec536}{ss:c-thread-register}{{22.12.1}{X}}
\@deflabeltype{ss:c-thread-register}{subsection}
\@@addtocsec{htoc}{ss:parallel-execution-long-running-c-code}{1}{\@print{22.12.2}\quad{}\label{ss:parallel-execution-long-running-c-code}Parallel execution of long-running C code with systhreads{}}
\new@anchor@label{sec537}{ss:parallel-execution-long-running-c-code}{{22.12.2}{X}}
\@deflabeltype{ss:parallel-execution-long-running-c-code}{subsection}
\@@addtocsec{htoc}{s:interfacing-windows-unicode-apis}{0}{\@print{22.13}\quad{}\label{s:interfacing-windows-unicode-apis}Advanced topic: interfacing with Windows Unicode APIs{}}
\new@anchor@label{sec538}{s:interfacing-windows-unicode-apis}{{22.13}{X}}
\@deflabeltype{s:interfacing-windows-unicode-apis}{section}
\@@addtocsec{htoc}{s:ocamlmklib}{0}{\@print{22.14}\quad{}\label{s:ocamlmklib}Building mixed C/OCaml libraries: \texttt{ocamlmklib}{}}
\new@anchor@label{sec540}{s:ocamlmklib}{{22.14}{X}}
\@deflabeltype{s:ocamlmklib}{section}
\@@addtocsec{htoc}{s:c-internal-guidelines}{0}{\@print{22.15}\quad{}\label{s:c-internal-guidelines}Cautionary words: the internal runtime API{}}
\new@anchor@label{sec542}{s:c-internal-guidelines}{{22.15}{X}}
\@deflabeltype{s:c-internal-guidelines}{section}
\@@addtocsec{htoc}{ss:c-internals}{1}{\@print{22.15.1}\quad{}\label{ss:c-internals}Internal variables and CAML_INTERNALS{}}
\new@anchor@label{sec544}{ss:c-internals}{{22.15.1}{X}}
\@deflabeltype{ss:c-internals}{subsection}
\@@addtocsec{htoc}{ss:c-internal-macros}{1}{\@print{22.15.2}\quad{}\label{ss:c-internal-macros}OCaml version macros{}}
\new@anchor@label{sec545}{ss:c-internal-macros}{{22.15.2}{X}}
\@deflabeltype{ss:c-internal-macros}{subsection}
\@@addtocsec{htoc}{sec546}{-1}{\@print{Chapter ‍23}\quad{}Optimisation with Flambda{}}
\@@addtocsec{htoc}{s:flambda-overview}{0}{\@print{23.1}\quad{}\label{s:flambda-overview}Overview{}}
\new@anchor@label{sec547}{s:flambda-overview}{{23.1}{X}}
\@deflabeltype{s:flambda-overview}{section}
\@@addtocsec{htoc}{s:flambda-cli}{0}{\@print{23.2}\quad{}\label{s:flambda-cli}Command-line flags{}}
\new@anchor@label{sec548}{s:flambda-cli}{{23.2}{X}}
\@deflabeltype{s:flambda-cli}{section}
\@@addtocsec{htoc}{ss:flambda-rounds}{1}{\@print{23.2.1}\quad{}\label{ss:flambda-rounds}Specification of optimisation parameters by round{}}
\new@anchor@label{sec550}{ss:flambda-rounds}{{23.2.1}{X}}
\@deflabeltype{ss:flambda-rounds}{subsection}
\@@addtocsec{htoc}{s:flambda-inlining}{0}{\@print{23.3}\quad{}\label{s:flambda-inlining}Inlining{}}
\new@anchor@label{sec551}{s:flambda-inlining}{{23.3}{X}}
\@deflabeltype{s:flambda-inlining}{section}
\new@anchor@label{sec552}{sss:flambda-inlining-aside}{{23.3}{X}}
\@deflabeltype{sss:flambda-inlining-aside}{section}
\@@addtocsec{htoc}{ss:flambda-classic}{1}{\@print{23.3.1}\quad{}\label{ss:flambda-classic}Classic inlining heuristic{}}
\new@anchor@label{sec553}{ss:flambda-classic}{{23.3.1}{X}}
\@deflabeltype{ss:flambda-classic}{subsection}
\@@addtocsec{htoc}{ss:flambda-inlining-overview}{1}{\@print{23.3.2}\quad{}\label{ss:flambda-inlining-overview}Overview of ``Flambda'' inlining heuristics{}}
\new@anchor@label{sec554}{ss:flambda-inlining-overview}{{23.3.2}{X}}
\@deflabeltype{ss:flambda-inlining-overview}{subsection}
\@@addtocsec{htoc}{ss:flambda-by-constructs}{1}{\@print{23.3.3}\quad{}\label{ss:flambda-by-constructs}Handling of specific language constructs{}}
\new@anchor@label{sec555}{ss:flambda-by-constructs}{{23.3.3}{X}}
\@deflabeltype{ss:flambda-by-constructs}{subsection}
\new@anchor@label{sec556}{sss:flambda-functors}{{23.3.3}{X}}
\@deflabeltype{sss:flambda-functors}{subsection}
\new@anchor@label{sec557}{sss:flambda-first-class-modules}{{23.3.3}{X}}
\@deflabeltype{sss:flambda-first-class-modules}{subsection}
\new@anchor@label{sec558}{sss:flambda-objects}{{23.3.3}{X}}
\@deflabeltype{sss:flambda-objects}{subsection}
\@@addtocsec{htoc}{ss:flambda-inlining-reports}{1}{\@print{23.3.4}\quad{}\label{ss:flambda-inlining-reports}Inlining reports{}}
\new@anchor@label{sec559}{ss:flambda-inlining-reports}{{23.3.4}{X}}
\@deflabeltype{ss:flambda-inlining-reports}{subsection}
\@@addtocsec{htoc}{ss:flambda-assessment-inlining}{1}{\@print{23.3.5}\quad{}\label{ss:flambda-assessment-inlining}Assessment of inlining benefit{}}
\new@anchor@label{sec560}{ss:flambda-assessment-inlining}{{23.3.5}{X}}
\@deflabeltype{ss:flambda-assessment-inlining}{subsection}
\@@addtocsec{htoc}{ss:flambda-speculation}{1}{\@print{23.3.6}\quad{}\label{ss:flambda-speculation}Control of speculation{}}
\new@anchor@label{sec561}{ss:flambda-speculation}{{23.3.6}{X}}
\@deflabeltype{ss:flambda-speculation}{subsection}
\@@addtocsec{htoc}{s:flambda-specialisation}{0}{\@print{23.4}\quad{}\label{s:flambda-specialisation}Specialisation{}}
\new@anchor@label{sec562}{s:flambda-specialisation}{{23.4}{X}}
\@deflabeltype{s:flambda-specialisation}{section}
\@@addtocsec{htoc}{ss:flambda-assessment-specialisation}{1}{\@print{23.4.1}\quad{}\label{ss:flambda-assessment-specialisation}Assessment of specialisation benefit{}}
\new@anchor@label{sec565}{ss:flambda-assessment-specialisation}{{23.4.1}{X}}
\@deflabeltype{ss:flambda-assessment-specialisation}{subsection}
\@@addtocsec{htoc}{s:flambda-defaults}{0}{\@print{23.5}\quad{}\label{s:flambda-defaults}Default settings of parameters{}}
\new@anchor@label{sec566}{s:flambda-defaults}{{23.5}{X}}
\@deflabeltype{s:flambda-defaults}{section}
\@@addtocsec{htoc}{ss:flambda-o2}{1}{\@print{23.5.1}\quad{}\label{ss:flambda-o2}Settings at -O2 optimisation level{}}
\new@anchor@label{sec567}{ss:flambda-o2}{{23.5.1}{X}}
\@deflabeltype{ss:flambda-o2}{subsection}
\@@addtocsec{htoc}{ss:flambda-o3}{1}{\@print{23.5.2}\quad{}\label{ss:flambda-o3}Settings at -O3 optimisation level{}}
\new@anchor@label{sec568}{ss:flambda-o3}{{23.5.2}{X}}
\@deflabeltype{ss:flambda-o3}{subsection}
\@@addtocsec{htoc}{s:flambda-manual-control}{0}{\@print{23.6}\quad{}\label{s:flambda-manual-control}Manual control of inlining and specialisation{}}
\new@anchor@label{sec569}{s:flambda-manual-control}{{23.6}{X}}
\@deflabeltype{s:flambda-manual-control}{section}
\@@addtocsec{htoc}{s:flambda-simplification}{0}{\@print{23.7}\quad{}\label{s:flambda-simplification}Simplification{}}
\new@anchor@label{sec571}{s:flambda-simplification}{{23.7}{X}}
\@deflabeltype{s:flambda-simplification}{section}
\@@addtocsec{htoc}{s:flambda-other-transfs}{0}{\@print{23.8}\quad{}\label{s:flambda-other-transfs}Other code motion transformations{}}
\new@anchor@label{sec572}{s:flambda-other-transfs}{{23.8}{X}}
\@deflabeltype{s:flambda-other-transfs}{section}
\@@addtocsec{htoc}{ss:flambda-lift-const}{1}{\@print{23.8.1}\quad{}\label{ss:flambda-lift-const}Lifting of constants{}}
\new@anchor@label{sec573}{ss:flambda-lift-const}{{23.8.1}{X}}
\@deflabeltype{ss:flambda-lift-const}{subsection}
\@@addtocsec{htoc}{ss:flambda-lift-toplevel-let}{1}{\@print{23.8.2}\quad{}\label{ss:flambda-lift-toplevel-let}Lifting of toplevel let bindings{}}
\new@anchor@label{sec575}{ss:flambda-lift-toplevel-let}{{23.8.2}{X}}
\@deflabeltype{ss:flambda-lift-toplevel-let}{subsection}
\@@addtocsec{htoc}{s:flambda-unboxing}{0}{\@print{23.9}\quad{}\label{s:flambda-unboxing}Unboxing transformations{}}
\new@anchor@label{sec576}{s:flambda-unboxing}{{23.9}{X}}
\@deflabeltype{s:flambda-unboxing}{section}
\@@addtocsec{htoc}{ss:flambda-unbox-fvs}{1}{\@print{23.9.1}\quad{}\label{ss:flambda-unbox-fvs}Unboxing of closure variables{}}
\new@anchor@label{sec577}{ss:flambda-unbox-fvs}{{23.9.1}{X}}
\@deflabeltype{ss:flambda-unbox-fvs}{subsection}
\@@addtocsec{htoc}{ss:flambda-unbox-spec-args}{1}{\@print{23.9.2}\quad{}\label{ss:flambda-unbox-spec-args}Unboxing of specialised arguments{}}
\new@anchor@label{sec579}{ss:flambda-unbox-spec-args}{{23.9.2}{X}}
\@deflabeltype{ss:flambda-unbox-spec-args}{subsection}
\@@addtocsec{htoc}{ss:flambda-unbox-closures}{1}{\@print{23.9.3}\quad{}\label{ss:flambda-unbox-closures}Unboxing of closures{}}
\new@anchor@label{sec581}{ss:flambda-unbox-closures}{{23.9.3}{X}}
\@deflabeltype{ss:flambda-unbox-closures}{subsection}
\@@addtocsec{htoc}{s:flambda-remove-unused}{0}{\@print{23.10}\quad{}\label{s:flambda-remove-unused}Removal of unused code and values{}}
\new@anchor@label{sec584}{s:flambda-remove-unused}{{23.10}{X}}
\@deflabeltype{s:flambda-remove-unused}{section}
\@@addtocsec{htoc}{ss:flambda-redundant-let}{1}{\@print{23.10.1}\quad{}\label{ss:flambda-redundant-let}Removal of redundant let expressions{}}
\new@anchor@label{sec585}{ss:flambda-redundant-let}{{23.10.1}{X}}
\@deflabeltype{ss:flambda-redundant-let}{subsection}
\@@addtocsec{htoc}{ss:flambda-redundant}{1}{\@print{23.10.2}\quad{}\label{ss:flambda-redundant}Removal of redundant program constructs{}}
\new@anchor@label{sec586}{ss:flambda-redundant}{{23.10.2}{X}}
\@deflabeltype{ss:flambda-redundant}{subsection}
\@@addtocsec{htoc}{ss:flambda-remove-unused-args}{1}{\@print{23.10.3}\quad{}\label{ss:flambda-remove-unused-args}Removal of unused arguments{}}
\new@anchor@label{sec587}{ss:flambda-remove-unused-args}{{23.10.3}{X}}
\@deflabeltype{ss:flambda-remove-unused-args}{subsection}
\@@addtocsec{htoc}{ss:flambda-removal-closure-vars}{1}{\@print{23.10.4}\quad{}\label{ss:flambda-removal-closure-vars}Removal of unused closure variables{}}
\new@anchor@label{sec588}{ss:flambda-removal-closure-vars}{{23.10.4}{X}}
\@deflabeltype{ss:flambda-removal-closure-vars}{subsection}
\@@addtocsec{htoc}{s:flambda-other}{0}{\@print{23.11}\quad{}\label{s:flambda-other}Other code transformations{}}
\new@anchor@label{sec589}{s:flambda-other}{{23.11}{X}}
\@deflabeltype{s:flambda-other}{section}
\@@addtocsec{htoc}{ss:flambda-non-escaping-refs}{1}{\@print{23.11.1}\quad{}\label{ss:flambda-non-escaping-refs}Transformation of non-escaping references into mutable variables{}}
\new@anchor@label{sec590}{ss:flambda-non-escaping-refs}{{23.11.1}{X}}
\@deflabeltype{ss:flambda-non-escaping-refs}{subsection}
\@@addtocsec{htoc}{ss:flambda-subst-closure-vars}{1}{\@print{23.11.2}\quad{}\label{ss:flambda-subst-closure-vars}Substitution of closure variables for specialised arguments{}}
\new@anchor@label{sec591}{ss:flambda-subst-closure-vars}{{23.11.2}{X}}
\@deflabeltype{ss:flambda-subst-closure-vars}{subsection}
\@@addtocsec{htoc}{s:flambda-effects}{0}{\@print{23.12}\quad{}\label{s:flambda-effects}Treatment of effects{}}
\new@anchor@label{sec592}{s:flambda-effects}{{23.12}{X}}
\@deflabeltype{s:flambda-effects}{section}
\@@addtocsec{htoc}{s:flambda-static-modules}{0}{\@print{23.13}\quad{}\label{s:flambda-static-modules}Compilation of statically-allocated modules{}}
\new@anchor@label{sec593}{s:flambda-static-modules}{{23.13}{X}}
\@deflabeltype{s:flambda-static-modules}{section}
\@@addtocsec{htoc}{s:flambda-inhibition}{0}{\@print{23.14}\quad{}\label{s:flambda-inhibition}Inhibition of optimisation{}}
\new@anchor@label{sec594}{s:flambda-inhibition}{{23.14}{X}}
\@deflabeltype{s:flambda-inhibition}{section}
\@@addtocsec{htoc}{s:flambda-unsafe}{0}{\@print{23.15}\quad{}\label{s:flambda-unsafe}Use of unsafe operations{}}
\new@anchor@label{sec595}{s:flambda-unsafe}{{23.15}{X}}
\@deflabeltype{s:flambda-unsafe}{section}
\@@addtocsec{htoc}{s:flambda-glossary}{0}{\@print{23.16}\quad{}\label{s:flambda-glossary}Glossary{}}
\new@anchor@label{sec596}{s:flambda-glossary}{{23.16}{X}}
\@deflabeltype{s:flambda-glossary}{section}
\@@addtocsec{htoc}{sec597}{-1}{\@print{Chapter ‍24}\quad{}Fuzzing with afl-fuzz{}}
\@@addtocsec{htoc}{s:afl-overview}{0}{\@print{24.1}\quad{}\label{s:afl-overview}Overview{}}
\new@anchor@label{sec598}{s:afl-overview}{{24.1}{X}}
\@deflabeltype{s:afl-overview}{section}
\@@addtocsec{htoc}{s:afl-generate}{0}{\@print{24.2}\quad{}\label{s:afl-generate}Generating instrumentation{}}
\new@anchor@label{sec599}{s:afl-generate}{{24.2}{X}}
\@deflabeltype{s:afl-generate}{section}
\@@addtocsec{htoc}{ss:afl-advanced}{1}{\@print{24.2.1}\quad{}\label{ss:afl-advanced}Advanced options{}}
\new@anchor@label{sec600}{ss:afl-advanced}{{24.2.1}{X}}
\@deflabeltype{ss:afl-advanced}{subsection}
\@@addtocsec{htoc}{s:afl-example}{0}{\@print{24.3}\quad{}\label{s:afl-example}Example{}}
\new@anchor@label{sec601}{s:afl-example}{{24.3}{X}}
\@deflabeltype{s:afl-example}{section}
\@@addtocsec{htoc}{sec602}{-1}{\@print{Chapter ‍25}\quad{}Runtime tracing with runtime events{}}
\newlabel{c:runtime-tracing}{{25}{X}}
\@deflabeltype{c:runtime-tracing}{chapter}
\@@addtocsec{htoc}{s:runtime-tracing-overview}{0}{\@print{25.1}\quad{}\label{s:runtime-tracing-overview}Overview{}}
\new@anchor@label{sec603}{s:runtime-tracing-overview}{{25.1}{X}}
\@deflabeltype{s:runtime-tracing-overview}{section}
\@@addtocsec{htoc}{s:runtime-tracing-architecture}{0}{\@print{25.2}\quad{}\label{s:runtime-tracing-architecture}Architecture{}}
\new@anchor@label{sec604}{s:runtime-tracing-architecture}{{25.2}{X}}
\@deflabeltype{s:runtime-tracing-architecture}{section}
\@@addtocsec{htoc}{s:runtime-tracing-probes}{1}{\@print{25.2.1}\quad{}\label{s:runtime-tracing-probes}Probes{}}
\new@anchor@label{sec605}{s:runtime-tracing-probes}{{25.2.1}{X}}
\@deflabeltype{s:runtime-tracing-probes}{subsection}
\@@addtocsec{htoc}{s:runtime-tracing-ingestion}{1}{\@print{25.2.2}\quad{}\label{s:runtime-tracing-ingestion}Events transport{}}
\new@anchor@label{sec606}{s:runtime-tracing-ingestion}{{25.2.2}{X}}
\@deflabeltype{s:runtime-tracing-ingestion}{subsection}
\new@anchor@label{sec607}{s:runtime-tracing-ringbuffers}{{25.2.2}{X}}
\@deflabeltype{s:runtime-tracing-ringbuffers}{subsection}
\new@anchor@label{sec608}{s:runtime-tracing-apis}{{25.2.2}{X}}
\@deflabeltype{s:runtime-tracing-apis}{subsection}
\@@addtocsec{htoc}{s-runtime-tracing-usage}{0}{\@print{25.3}\quad{}\label{s-runtime-tracing-usage}Usage{}}
\new@anchor@label{sec609}{s-runtime-tracing-usage}{{25.3}{X}}
\@deflabeltype{s-runtime-tracing-usage}{section}
\@@addtocsec{htoc}{s-runtime-tracing-ocaml-apis}{1}{\@print{25.3.1}\quad{}\label{s-runtime-tracing-ocaml-apis}With OCaml APIs{}}
\new@anchor@label{sec610}{s-runtime-tracing-ocaml-apis}{{25.3.1}{X}}
\@deflabeltype{s-runtime-tracing-ocaml-apis}{subsection}
\new@anchor@label{sec611}{s-runtime-tracing-environment-variables}{{25.3.1}{X}}
\@deflabeltype{s-runtime-tracing-environment-variables}{subsection}
\new@anchor@label{sec612}{s-runtime-tracing-instrumented-runtime}{{25.3.1}{X}}
\@deflabeltype{s-runtime-tracing-instrumented-runtime}{subsection}
\@@addtocsec{htoc}{s-runtime-tracing-tooling}{1}{\@print{25.3.2}\quad{}\label{s-runtime-tracing-tooling}With tooling{}}
\new@anchor@label{sec613}{s-runtime-tracing-tooling}{{25.3.2}{X}}
\@deflabeltype{s-runtime-tracing-tooling}{subsection}
\new@anchor@label{sec614}{s-runtime-tracing-latency}{{25.3.2}{X}}
\@deflabeltype{s-runtime-tracing-latency}{subsection}
\@@addtocsec{htoc}{sec615}{-1}{\@print{Chapter ‍26}\quad{}The ``Tail Modulo Constructor'' program transformation{}}
\newlabel{c:tail_mod_cons}{{26}{X}}
\@deflabeltype{c:tail_mod_cons}{chapter}
\@@addtocsec{htoc}{sec:disambiguation}{0}{\@print{26.1}\quad{}\label{sec:disambiguation}Disambiguation{}}
\new@anchor@label{sec620}{sec:disambiguation}{{26.1}{X}}
\@deflabeltype{sec:disambiguation}{section}
\@@addtocsec{htoc}{sec:out-of-tmc}{0}{\@print{26.2}\quad{}\label{sec:out-of-tmc}Danger: getting out of tail-mod-cons{}}
\new@anchor@label{sec621}{sec:out-of-tmc}{{26.2}{X}}
\@deflabeltype{sec:out-of-tmc}{section}
\@@addtocsec{htoc}{sec:details}{0}{\@print{26.3}\quad{}\label{sec:details}Details on the transformation{}}
\new@anchor@label{sec622}{sec:details}{{26.3}{X}}
\@deflabeltype{sec:details}{section}
\@@addtocsec{htoc}{sec:limitations}{0}{\@print{26.4}\quad{}\label{sec:limitations}Current limitations{}}
\new@anchor@label{sec623}{sec:limitations}{{26.4}{X}}
\@deflabeltype{sec:limitations}{section}
\@@addtocsec{htoc}{sec627}{-2}{\@print{Part ‍IV}\quad{}The OCaml library{}}
\newlabel{p:library}{{IV}{X}}
\@deflabeltype{p:library}{part}
\@@addtocsec{htoc}{sec628}{-1}{\@print{Chapter ‍27}\quad{}The core library{}}
\newlabel{c:corelib}{{27}{X}}
\@deflabeltype{c:corelib}{chapter}
\@@addtocsec{htoc}{s:core-builtins}{0}{\@print{27.1}\quad{}\label{s:core-builtins}Built-in types and predefined exceptions{}}
\new@anchor@label{sec629}{s:core-builtins}{{27.1}{X}}
\@deflabeltype{s:core-builtins}{section}
\new@anchor@label{sec630}{ss:builtin-types}{{27.1}{X}}
\@deflabeltype{ss:builtin-types}{section}
\new@anchor@label{sec631}{ss:predef-exn}{{27.1}{X}}
\@deflabeltype{ss:predef-exn}{section}
\@@addtocsec{htoc}{s:stdlib-module}{0}{\@print{27.2}\quad{}\label{s:stdlib-module}Module {\tt Stdlib}: the initially opened module{}}
\new@anchor@label{sec632}{s:stdlib-module}{{27.2}{X}}
\@deflabeltype{s:stdlib-module}{section}
\@@addtocsec{htoc}{sec633}{-1}{\@print{Chapter ‍28}\quad{}The standard library{}}
\newlabel{c:stdlib}{{28}{X}}
\@deflabeltype{c:stdlib}{chapter}
\newlabel{stdlib:top}{{28}{X}}
\@deflabeltype{stdlib:top}{chapter}
\@@addtocsec{htoc}{sec634}{-1}{\@print{Chapter ‍29}\quad{}The compiler front-end{}}
\newlabel{c:parsinglib}{{29}{X}}
\@deflabeltype{c:parsinglib}{chapter}
\newlabel{Compiler-underscorelibs}{{29}{X}}
\@deflabeltype{Compiler-underscorelibs}{chapter}
\@@addtocsec{htoc}{sec635}{-1}{\@print{Chapter ‍30}\quad{}The unix library: Unix system calls{}}
\newlabel{c:unix}{{30}{X}}
\@deflabeltype{c:unix}{chapter}
\@@addtocsec{htoc}{sec636}{-1}{\@print{Chapter ‍31}\quad{}The str library: regular expressions and string processing{}}
\@@addtocsec{htoc}{sec637}{-1}{\@print{Chapter ‍32}\quad{}The runtime_events library{}}
\newlabel{c:runtime_events}{{32}{X}}
\@deflabeltype{c:runtime_events}{chapter}
\@@addtocsec{htoc}{sec638}{-1}{\@print{Chapter ‍33}\quad{}The threads library{}}
\newlabel{c:threads}{{33}{X}}
\@deflabeltype{c:threads}{chapter}
\@@addtocsec{htoc}{sec639}{-1}{\@print{Chapter ‍34}\quad{}The dynlink library: dynamic loading and linking of object files{}}
\@@addtocsec{htoc}{sec640}{-1}{\@print{Chapter ‍35}\quad{}Recently removed or moved libraries (Graphics, Bigarray, Num, LablTk){}}
\@@addtocsec{htoc}{s:graphics-removed}{0}{\@print{35.1}\quad{}\label{s:graphics-removed}The Graphics Library{}}
\new@anchor@label{sec641}{s:graphics-removed}{{35.1}{X}}
\@deflabeltype{s:graphics-removed}{section}
\@@addtocsec{htoc}{s:bigarray-moved}{0}{\@print{35.2}\quad{}\label{s:bigarray-moved}The Bigarray Library{}}
\new@anchor@label{sec642}{s:bigarray-moved}{{35.2}{X}}
\@deflabeltype{s:bigarray-moved}{section}
\@@addtocsec{htoc}{sec643}{0}{\@print{35.3}\quad{}\label{s:graphics-removed}The Num Library{}}
\@deflabeltype{s:graphics-removed}{section}
\@@addtocsec{htoc}{s:labltk-removed}{0}{\@print{35.4}\quad{}\label{s:labltk-removed}The Labltk Library and OCamlBrowser{}}
\new@anchor@label{sec644}{s:labltk-removed}{{35.4}{X}}
\@deflabeltype{s:labltk-removed}{section}
\@@addtocsec{htoc}{sec645}{-2}{\@print{Part ‍V}\quad{}Indexes{}}
\newlabel{p:indexes}{{V}{X}}
\@deflabeltype{p:indexes}{part}
\newlabel{section@the@hevea@index@manual.kwd}{{V}{X}}
\@deflabeltype{section@the@hevea@index@manual.kwd}{part}
