···8585 end
86868787(** Extract universe hash from html_path.
8888- Path format: .../prep/universes/{universe}/{pkg}/{version}/html *)
8888+ Path format: [.../prep/universes/<universe>/<pkg>/<version>/html] *)
8989let extract_universe html_path =
9090 let parts = String.split_on_char '/' html_path in
9191 let rec find_after_universes = function
···120120 None
121121 with _ -> None
122122123123-(** Check if a directory name is a doc layer (doc-{hash}, but not doc-driver- or doc-odoc-) *)
123123+(** Check if a directory name is a doc layer ([doc-<hash>], but not [doc-driver-] or [doc-odoc-]) *)
124124let is_doc_layer_dir name =
125125 let len = String.length name in
126126 len > 4 && String.sub name 0 4 = "doc-"
+1-1
day10/bin/jtw_tools.ml
···33 Per OCaml version: installs js_of_ocaml and js_top_worker (pinned from
44 a git repo), builds worker.js, and extracts stdlib cmis + dynamic_cmis.json.
5566- Cached as jtw-tools-{hash}/ per OCaml version + repo + branch. *)
66+ Cached as [jtw-tools-<hash>/] per OCaml version + repo + branch. *)
7788(** Compute hash for the jtw-tools layer.
99 Depends on OCaml version, repo, and branch. *)
+1-1
day10/bin/linux.ml
···396396(** Run odoc_driver_voodoo in a container.
397397398398 This runs odoc_driver_voodoo which:
399399- - Finds packages in prep/universes/{u}/{pkg}/{v}/
399399+ - Finds packages in [prep/universes/<u>/<pkg>/<v>/]
400400 - Compiles .cmti/.cmt to .odoc with marker files
401401 - Links and generates HTML
402402 - Uses marker files to find dependencies
···529529530530 This module provides atomic swap operations for documentation directories,
531531 implementing the "fresh docs with graceful degradation" pattern:
532532- - Write new docs to a staging directory ({dir}.new)
533533- - On success, atomically swap: old -> .old, new -> current, remove .old
532532+ - Write new docs to a staging directory ([dir.new])
533533+ - On success, atomically swap: old -> [.old], new -> current, remove [.old]
534534 - On failure, leave original docs untouched
535535536536 Recovery: On startup, clean up any stale .new or .old directories left
+2-2
day10/bin/sync_docs.ml
···1111}
12121313(** Extract universe hash from html_path.
1414- Path format: .../prep/universes/{universe}/{pkg}/{version}/html *)
1414+ Path format: [.../prep/universes/<universe>/<pkg>/<version>/html] *)
1515let extract_universe html_path =
1616 let parts = String.split_on_char '/' html_path in
1717 let rec find_after_universes = function
···4242 with
4343 | _ -> None
44444545-(** Check if a directory name is a doc layer (doc-{hash}, but not doc-driver- or doc-odoc-) *)
4545+(** Check if a directory name is a doc layer ([doc-<hash>], but not [doc-driver-] or [doc-odoc-]) *)
4646let is_doc_layer_dir name =
4747 let len = String.length name in
4848 len > 4 && String.sub name 0 4 = "doc-"
+1-1
day10/bin/util.ml
···4141 in
4242 Yojson.Safe.to_file name (`Assoc fields)
43434444-(** Ensure a symlink exists from packages/{pkg_str}/{layer_name} -> ../../{layer_name}
4444+(** Ensure a symlink exists from [packages/<pkg_str>/<layer_name>] to [../../<layer_name>].
4545 This enables tracking all builds/docs for a package.version. *)
4646let ensure_package_layer_symlink ~cache_dir ~os_key ~pkg_str ~layer_name =
4747 let pkg_dir = Path.(cache_dir / os_key / "packages" / pkg_str) in
+5-5
day10/lib/atomic_swap.ml
···2233 This module provides atomic swap operations for documentation directories,
44 implementing the "fresh docs with graceful degradation" pattern:
55- - Write new docs to a staging directory ({dir}.new)
66- - On success, atomically swap: old -> .old, new -> current, remove .old
55+ - Write new docs to a staging directory ([dir.new])
66+ - On success, atomically swap: old -> [.old], new -> current, remove [.old]
77 - On failure, leave original docs intact
8899 This is a standalone module that can be used for testing without
···89899090(** Get paths for atomic swap operations.
9191 Returns (staging_dir, final_dir, old_dir) where:
9292- - staging_dir: {version}.new - where new docs are written
9393- - final_dir: {version} - the live docs location
9494- - old_dir: {version}.old - backup during swap *)
9292+ - staging_dir: [<version>.new] - where new docs are written
9393+ - final_dir: [<version>] - the live docs location
9494+ - old_dir: [<version>.old] - backup during swap *)
9595let get_swap_paths ~html_dir ~pkg ~version ~blessed ~universe =
9696 let base_dir =
9797 if blessed then
+5-3
day10/lib/build_lock.ml
···44 providing reliable "in progress" detection without stale state.
5566 Lock file naming:
77- locks/build-{package}.{version}-{universe}.lock
88- locks/doc-{package}.{version}-{universe}.lock
99- locks/tool-{name}.lock or locks/tool-{name}-{ocaml_version}.lock
77+ {[
88+ locks/build-<package>.<version>-<universe>.lock
99+ locks/doc-<package>.<version>-<universe>.lock
1010+ locks/tool-<name>.lock or locks/tool-<name>-<ocaml_version>.lock
1111+ ]}
10121113 This module provides query functions for the web UI. The actual lock
1214 acquisition is done by Os.create_directory_exclusively in bin/os.ml. *)
+6-4
day10/lib/run_log.ml
···11(** Run logging for batch processing.
2233 Manages timestamp-based run directories with structured logs:
44- - runs/{id}/summary.json
55- - runs/{id}/build/{package}.log
66- - runs/{id}/docs/{package}.log
77- - latest -> runs/{id} (symlink)
44+ {[
55+ runs/<id>/summary.json
66+ runs/<id>/build/<package>.log
77+ runs/<id>/docs/<package>.log
88+ latest -> runs/<id> (symlink)
99+ ]}
810*)
9111012(** Run metadata *)
+8-6
day10/web/data/layer_data.ml
···11(** Read layer info for packages from day10's cache directory.
22- Uses the packages/{pkg}/ directory structure with symlinks:
33- - build-{hash} -> ../../build-{hash} (all builds)
44- - doc-{hash} -> ../../doc-{hash} (all docs)
55- - blessed-build -> ../../build-{hash} (canonical build if blessed)
66- - blessed-docs -> ../../doc-{hash} (canonical docs if blessed)
77- Falls back to scanning build-* directories if no symlinks exist. *)
22+ Uses the [packages/<pkg>/] directory structure with symlinks:
33+ {[
44+ build-<hash> -> ../../build-<hash> (all builds)
55+ doc-<hash> -> ../../doc-<hash> (all docs)
66+ blessed-build -> ../../build-<hash> (canonical build if blessed)
77+ blessed-docs -> ../../doc-<hash> (canonical docs if blessed)
88+ ]}
99+ Falls back to scanning [build-*] directories if no symlinks exist. *)
810911type layer_info = {
1012 package: string;
+1-1
day10/web/views/live_log.ml
···2323 else
2424 None
25252626-(** Try to find a completed layer log by looking in packages/{pkg_str}/ for layer symlinks *)
2626+(** Try to find a completed layer log by looking in [packages/<pkg_str>/] for layer symlinks *)
2727let find_completed_layer_log ~cache_dir ~platform ~stage ~pkg_str =
2828 let pkg_dir = Filename.concat (Filename.concat (Filename.concat cache_dir platform) "packages") pkg_str in
2929 if not (Sys.file_exists pkg_dir) then None
···11+# Sherlodoc Markdown Storage
22+33+## Problem
44+55+Sherlodoc stores documentation as pre-rendered HTML (`doc_html` field in `Entry.t`).
66+This is unsuitable for LLM/AI consumption and terminal CLI display, where markdown
77+is the natural format.
88+99+## Solution
1010+1111+Add a `doc_markdown : string` field to `Entry.t`, populated at index time using
1212+odoc's markdown2 renderer (with LLM-specific improvements: fully qualified paths
1313+and unified code blocks for type definitions).
1414+1515+## Approach: Dual storage (Approach 1)
1616+1717+Store both `doc_html` and `doc_markdown` in each entry. Compute both at index time.
1818+No runtime conversion needed. Database size increase is modest since doc comments
1919+are typically small.
2020+2121+## Changes
2222+2323+### 1. `db/entry.ml` — Add `doc_markdown` field
2424+2525+```ocaml
2626+type t =
2727+ { name : string
2828+ ; rhs : string option
2929+ ; url : string
3030+ ; kind : Kind.t
3131+ ; cost : int
3232+ ; doc_html : string
3333+ ; doc_markdown : string (* NEW *)
3434+ ; pkg : Package.t
3535+ }
3636+```
3737+3838+Update `v`, `pp`, `structural_compare` accordingly.
3939+4040+### 2. `odoc/src/search/` — Add markdown rendering for doc comments
4141+4242+Add a `markdown_string_of_doc` function that mirrors `html_string_of_doc`:
4343+4444+```
4545+Comment.elements
4646+ -> Odoc_document.Comment.to_ir
4747+ -> Odoc_markdown.Generator.block
4848+ -> Renderer.to_string (Renderer.Block.Blocks blocks)
4949+ -> string
5050+```
5151+5252+The search module's dune gains a dependency on `odoc_markdown`.
5353+5454+### 3. `index/load_doc.ml` — Populate `doc_markdown` at index time
5555+5656+In `register_entry`, compute `doc_markdown` alongside `doc_html`:
5757+5858+```ocaml
5959+let doc_markdown =
6060+ match doc_txt with
6161+ | "" -> ""
6262+ | _ -> markdown_string_of_doc doc
6363+in
6464+```
6565+6666+The index dune gains a dependency on `odoc_markdown` (via the search module).
6767+6868+### 4. `cli/search.ml` — Default to markdown in CLI output
6969+7070+- Change `--print-docstring-html` to print `elt.doc_markdown` and rename to
7171+ `--print-docstring` (keeping `--print-docstring-html` for HTML output)
7272+- When `--print-docstring` is set, print `elt.doc_markdown`
7373+7474+### 5. Storage scope
7575+7676+Marshal format only for now — it serializes `Entry.t` directly so adding a field
7777+Just Works. JS and ancient formats can be extended later.
7878+7979+## What stays the same
8080+8181+- Suffix tree / type polarity indices — unchanged
8282+- Search algorithm — unchanged
8383+- `doc_html` field — kept for browser/HTML consumers
8484+- Text tokenization for search indexing — still uses `Text.of_doc`
8585+8686+## LLM markdown improvements (cherry-picked from jonludlam/odoc)
8787+8888+These commits improve markdown quality for LLM consumption:
8989+9090+1. **Fully qualified paths** — `Foo.Bar.t` instead of just `t`
9191+2. **Unified code blocks** — Type definitions rendered as single code blocks
9292+ with inline doc comments instead of fragmented separate blocks
9393+3. **Record field types** — Proper extraction of all inline elements
9494+9595+## Dependencies
9696+9797+The `index` library needs `odoc_markdown` added to its dune dependencies.
9898+The `db` library has no new dependencies.
···128128(** Parse a findlib_index file (JSON or legacy text format) and return
129129 the list of META file paths and universe paths.
130130131131- JSON format: {"meta_files": ["path/to/META", ...], "universes": ["universe1", ...]}
131131+ JSON format: [{"meta_files": [...], "universes": [...]}]
132132133133 meta_files: direct paths to META files
134134 universes: paths to other universes (directories containing findlib_index) *)
···44 externally via CSS custom properties defined in {!Scrollycode_css}
55 and set by theme files in {!Scrollycode_themes}.
6677- Authoring format uses @scrolly custom tags with an ordered
77+ Authoring format uses [@scrolly] custom tags with an ordered
88 list inside, where each list item is a tutorial step containing
99 a bold title, prose paragraphs, and a code block.
1010
+29-11
odoc/sherlodoc/cli/search.ml
···2020 | Page -> "page"
2121 | Impl -> "source"
22222323-let print_result ~print_cost ~print_docstring ~no_rhs (elt : Db.Entry.t) =
2323+type docstring_format = No_docstring | Markdown | Html
2424+2525+let print_result ~print_cost ~docstring_format ~no_rhs (elt : Db.Entry.t) =
2426 let cost = if print_cost then string_of_int elt.cost ^ " " else "" in
2527 let typedecl_params =
2628 (match elt.kind with
···3638 | Some _ when no_rhs -> ()
3739 | Some rhs -> Format.fprintf h "%s" (Unescape.string rhs)
3840 in
3939- let docstring = if print_docstring then "\n" ^ elt.doc_html else "" in
4141+ let docstring =
4242+ match docstring_format with
4343+ | No_docstring -> ""
4444+ | Markdown -> "\n" ^ elt.doc_markdown
4545+ | Html -> "\n" ^ elt.doc_html
4646+ in
4047 Format.printf "%s%s %s%s%a%s@." cost kind typedecl_params name pp_rhs elt.rhs docstring
41484249let search
···4754 ~no_rhs
4855 ~pretty_query
4956 ~time
5050- ~print_docstring
5757+ ~docstring_format
5158 query
5259 =
5360 let query = Query.{ query; packages = []; limit } in
···5865 match r with
5966 | [] -> print_endline "[No results]"
6067 | _ :: _ as results ->
6161- List.iter (print_result ~print_cost ~print_docstring ~no_rhs) results ;
6868+ List.iter (print_result ~print_cost ~docstring_format ~no_rhs) results ;
6269 flush stdout ;
6370 if time then Format.printf "Search in %f@." (t1 -. t0)
6471···6976 ~static_sort
7077 ~limit
7178 ~time
7272- ~print_docstring
7979+ ~docstring_format
7380 ~db
7481 =
7582 Printf.printf "%ssearch>%s %!" "\027[0;36m" "\027[0;0m" ;
···8390 ~no_rhs
8491 ~pretty_query
8592 ~time
8686- ~print_docstring
9393+ ~docstring_format
8794 query ;
8895 search_loop
8996 ~print_cost
···9299 ~static_sort
93100 ~limit
94101 ~time
9595- ~print_docstring
102102+ ~docstring_format
96103 ~db
97104 | exception End_of_file -> Printf.printf "\n%!"
98105···105112 pretty_query
106113 time
107114 print_docstring
115115+ print_docstring_html
108116 db_format
109117 db_filename
110118 =
119119+ let docstring_format =
120120+ if print_docstring then Markdown
121121+ else if print_docstring_html then Html
122122+ else No_docstring
123123+ in
111124 let module Storage = (val Db_store.storage_module db_format) in
112125 let db = Storage.load db_filename in
113126 match query with
···120133 ~static_sort
121134 ~limit
122135 ~time
123123- ~print_docstring
136136+ ~docstring_format
124137 ~db
125138 | Some query ->
126139 search
···130143 ~static_sort
131144 ~limit
132145 ~time
133133- ~print_docstring
146146+ ~docstring_format
134147 ~db
135148 query
136149···169182 Arg.(value & flag & info [ "pretty-query" ] ~doc)
170183171184let print_docstring =
172172- let doc = "Print the HTML of the docstring of the results" in
185185+ let doc = "Print the markdown docstring of the results" in
186186+ Arg.(value & flag & info [ "print-docstring" ] ~doc)
187187+188188+let print_docstring_html =
189189+ let doc = "Print the HTML docstring of the results" in
173190 Arg.(value & flag & info [ "print-docstring-html" ] ~doc)
174191175192let term =
···182199 $ limit
183200 $ pretty_query
184201 $ print_time
185185- $ print_docstring)
202202+ $ print_docstring
203203+ $ print_docstring_html)
···23232424 How is polarity computed exactly ? When you have [t -> u], the polarity of [t]
2525 is inversed, and the polarity of [u] stays the same. A good example of this is
2626- the type of {!Stdlib.Out_channel.with_open_gen} :
2626+ the type of [Out_channel.with_open_gen] :
27272828 {[
2929 val with_open_gen : open_flag list -> int -> string -> (t -> 'a) -> 'a
···3232 Here the polarities are [-open_flag list], [-int], [-string], [+Out_channel.t],
3333 [-'a] and [+'a]. The fact that we have [+Out_channel.t] might be puzzling at
3434 first, because an [Out_channel.t] is not returned by the function, but
3535- {!Stdlib.Out_channel.with_open_gen} is indeed one of the possible ways to create
3535+ [Out_channel.with_open_gen] is indeed one of the possible ways to create
3636 an [Out_channel.t].
37373838 There is however a complication. If the user queries for [int -> int -> string],
···44 $ export SHERLODOC_DB=db.bin
55 $ export SHERLODOC_FORMAT=marshal
66 $ sherlodoc index $(find . -name '*.odocl')
77- $ sherlodoc search --print-docstring "foo"
77+ $ sherlodoc search --print-docstring-html "foo"
88 val A.foo : int
99 <div><p>This is a docstring with a <span>link</span></p></div>
1010- $ sherlodoc search --print-docstring "bar"
1010+ $ sherlodoc search --print-docstring-html "bar"
1111 val A.bar : int
1212 <div><p>This is a docstring with a ref to <span><code>foo</code></span></p></div>
···11+22+(** This is a docstring with a {{:https://sherlocode.com}link} *)
33+val foo : int
44+55+(** This is a docstring with a ref to {!foo} *)
66+val bar : int
77+88+(** [hello name] returns a greeting for [name].
99+1010+ For example:
1111+ {[
1212+ hello "world" = "Hello, world!"
1313+ ]}
1414+*)
1515+val hello : string -> string
···11+ $ ocamlc -c a.mli -bin-annot -I .
22+ $ odoc compile -I . a.cmti
33+ $ odoc link -I . a.odoc
44+ $ export SHERLODOC_DB=db.bin
55+ $ export SHERLODOC_FORMAT=marshal
66+ $ sherlodoc index $(find . -name '*.odocl')
77+88+Search without docstrings:
99+1010+ $ sherlodoc search "foo" 2>&1
1111+ val A.foo : int
1212+1313+Search with markdown docstrings:
1414+1515+ $ sherlodoc search --print-docstring "foo" 2>&1
1616+ val A.foo : int
1717+ This is a docstring with a [link](https://sherlocode.com)
1818+1919+2020+ $ sherlodoc search --print-docstring "bar" 2>&1
2121+ val A.bar : int
2222+ This is a docstring with a ref to [`foo`](A.md#val-foo)
2323+2424+2525+ $ sherlodoc search --print-docstring "hello" 2>&1
2626+ val A.hello : string -> string
2727+ `hello name` returns a greeting for `name`.
2828+2929+ For example:
3030+3131+ ```ocaml
3232+ hello "world" = "Hello, world!"
3333+ ```
3434+3535+3636+Search with HTML docstrings:
3737+3838+ $ sherlodoc search --print-docstring-html "foo" 2>&1
3939+ val A.foo : int
4040+ <div><p>This is a docstring with a <span>link</span></p></div>
···305305 match header with Some header -> Some header | None -> None
306306 in
307307 let inline_source = source inline_text_only code in
308308- let code = [ String.concat ~sep:"" inline_source ] in
309309- let block = Renderer.Block.Code_block { info_string; code } in
310310- [ block ] @ to_markdown rest
308308+ let initial_code = String.concat ~sep:"" inline_source in
309309+310310+ (* Check if the rest starts with Documented/Nested items - if so, combine them *)
311311+ (match rest with
312312+ | (Documented _ | Nested _) :: _ ->
313313+ let l, _, remaining_rest = take_descr rest in
314314+ (* Combine the initial code with the documented items *)
315315+ let combine_code_with_docs initial_code items =
316316+ let rec collect_lines acc = function
317317+ | [] -> List.rev acc
318318+ | { attrs = _; anchor = _; code; doc; markers = _ } :: rest ->
319319+ let code_line = match code with
320320+ | `D code ->
321321+ let inline_source = inline ~config ~resolve code in
322322+ let rec extract_all_text acc = function
323323+ | [] -> List.rev acc
324324+ | Renderer.Inline.Text s :: rest -> extract_all_text (s :: acc) rest
325325+ | Renderer.Inline.Code_span code_list :: rest ->
326326+ extract_all_text (String.concat ~sep:"" code_list :: acc) rest
327327+ | Renderer.Inline.Inlines inlines :: rest ->
328328+ extract_all_text (extract_all_text [] inlines @ acc) rest
329329+ | Renderer.Inline.Emphasis inner :: rest ->
330330+ extract_all_text (extract_all_text [] [inner] @ acc) rest
331331+ | Renderer.Inline.Strong_emphasis inner :: rest ->
332332+ extract_all_text (extract_all_text [] [inner] @ acc) rest
333333+ | Renderer.Inline.Link { text; _ } :: rest ->
334334+ extract_all_text (extract_all_text [] [text] @ acc) rest
335335+ | Renderer.Inline.Image { text; _ } :: rest ->
336336+ extract_all_text (extract_all_text [] [text] @ acc) rest
337337+ | _ :: rest -> extract_all_text acc rest
338338+ in
339339+ let code_text = String.concat ~sep:"" (extract_all_text [] inline_source) in
340340+ String.trim code_text
341341+ | `N n ->
342342+ (* For nested items, recursively process them *)
343343+ let nested_blocks = to_markdown n in
344344+ String.concat ~sep:"\n" (List.concat_map (function
345345+ | Renderer.Block.Code_block { code; _ } -> code
346346+ | _ -> []) nested_blocks)
347347+ in
348348+ let doc_comment = match doc with
349349+ | [] -> ""
350350+ | doc_blocks ->
351351+ let doc_text = String.concat ~sep:"" (block_text_only doc_blocks) in
352352+ let cleaned_text = String.trim doc_text in
353353+ if cleaned_text = "" then ""
354354+ else " (** " ^ cleaned_text ^ " *)"
355355+ in
356356+ let combined_line = code_line ^ doc_comment in
357357+ collect_lines (combined_line :: acc) rest
358358+ in
359359+ let constructor_lines = collect_lines [] items in
360360+ String.trim initial_code :: constructor_lines
361361+ in
362362+ let combined_lines = combine_code_with_docs initial_code l in
363363+ (* Also collect any trailing Code items (like closing ']' for polymorphic variants) *)
364364+ let rec collect_trailing_code items acc =
365365+ match items with
366366+ | (Code _ | Alternative _) :: _ ->
367367+ let code, _, remaining = take_code items in
368368+ let trailing_code = String.concat ~sep:"" (source inline_text_only code) in
369369+ collect_trailing_code remaining (String.trim trailing_code :: acc)
370370+ | rest -> (List.rev acc, rest)
371371+ in
372372+ let trailing_codes, final_rest = collect_trailing_code remaining_rest [] in
373373+ let all_lines = combined_lines @ trailing_codes in
374374+ if all_lines <> [] then
375375+ let combined_code = String.concat ~sep:"\n" all_lines in
376376+ let code_block = Renderer.Block.Code_block { info_string; code = [combined_code] } in
377377+ [code_block] @ to_markdown final_rest
378378+ else
379379+ let code = [ initial_code ] in
380380+ let block = Renderer.Block.Code_block { info_string; code } in
381381+ [ block ] @ to_markdown rest
382382+ | _ ->
383383+ let code = [ initial_code ] in
384384+ let block = Renderer.Block.Code_block { info_string; code } in
385385+ [ block ] @ to_markdown rest)
311386 | Subpage subp :: _ -> subpage ~config ~resolve subp
312387 | (Documented _ | Nested _) :: _ ->
313388 let l, _, rest = take_descr t in
314314- let one { attrs = _; anchor = _; code; doc; markers = _ } =
315315- let content =
316316- match code with
317317- | `D code ->
318318- let inline_source = inline ~config ~resolve code in
319319- let inlines = Renderer.Inline.Inlines inline_source in
320320- let block = Renderer.Block.Paragraph inlines in
321321- [ block ]
322322- | `N n -> to_markdown n
389389+ (* Combine code and documentation into a single code block with inline comments *)
390390+ let combine_code_with_docs items =
391391+ let rec collect_lines acc = function
392392+ | [] -> List.rev acc
393393+ | { attrs = _; anchor = _; code; doc; markers = _ } :: rest ->
394394+ let code_line = match code with
395395+ | `D code ->
396396+ let inline_source = inline ~config ~resolve code in
397397+ let rec extract_all_text acc = function
398398+ | [] -> List.rev acc
399399+ | Renderer.Inline.Text s :: rest -> extract_all_text (s :: acc) rest
400400+ | Renderer.Inline.Code_span code_list :: rest ->
401401+ extract_all_text (String.concat ~sep:"" code_list :: acc) rest
402402+ | Renderer.Inline.Inlines inlines :: rest ->
403403+ extract_all_text (extract_all_text [] inlines @ acc) rest
404404+ | Renderer.Inline.Emphasis inner :: rest ->
405405+ extract_all_text (extract_all_text [] [inner] @ acc) rest
406406+ | Renderer.Inline.Strong_emphasis inner :: rest ->
407407+ extract_all_text (extract_all_text [] [inner] @ acc) rest
408408+ | Renderer.Inline.Link { text; _ } :: rest ->
409409+ extract_all_text (extract_all_text [] [text] @ acc) rest
410410+ | Renderer.Inline.Image { text; _ } :: rest ->
411411+ extract_all_text (extract_all_text [] [text] @ acc) rest
412412+ | _ :: rest -> extract_all_text acc rest
413413+ in
414414+ let code_text = String.concat ~sep:"" (extract_all_text [] inline_source) in
415415+ String.trim code_text
416416+ | `N n ->
417417+ (* For nested items, recursively process them *)
418418+ let nested_blocks = to_markdown n in
419419+ String.concat ~sep:"\n" (List.concat_map (function
420420+ | Renderer.Block.Code_block { code; _ } -> code
421421+ | _ -> []) nested_blocks)
422422+ in
423423+ let doc_comment = match doc with
424424+ | [] -> ""
425425+ | doc_blocks ->
426426+ let doc_text = String.concat ~sep:"" (block_text_only doc_blocks) in
427427+ let cleaned_text = String.trim doc_text in
428428+ if cleaned_text = "" then ""
429429+ else " (** " ^ cleaned_text ^ " *)"
430430+ in
431431+ let combined_line = code_line ^ doc_comment in
432432+ collect_lines (combined_line :: acc) rest
323433 in
324324- let block_doc = block ~config ~resolve doc in
325325- List.append content block_doc
434434+ collect_lines [] items
326435 in
327327- let all_blocks = List.concat_map one l in
328328- all_blocks @ to_markdown rest
436436+ let combined_lines = combine_code_with_docs l in
437437+ if combined_lines <> [] then
438438+ let combined_code = String.concat ~sep:"\n" combined_lines in
439439+ let code_block = Renderer.Block.Code_block { info_string = None; code = [combined_code] } in
440440+ [code_block] @ to_markdown rest
441441+ else
442442+ to_markdown rest
329443 in
330444 to_markdown t
331445···393507let inline ~config ~xref_base_uri b =
394508 let resolve = Link.Base xref_base_uri in
395509 inline ~config ~resolve b
510510+511511+let block ~config ~xref_base_uri b =
512512+ let resolve = Link.Base xref_base_uri in
513513+ block ~config ~resolve b
396514397515let filepath ~config url = Link.Path.as_filename ~config url
+6
odoc/src/markdown2/generator.mli
···1616 xref_base_uri:string ->
1717 Odoc_document.Types.Inline.t ->
1818 Renderer.Inline.t list
1919+2020+val block :
2121+ config:Config.t ->
2222+ xref_base_uri:string ->
2323+ Odoc_document.Types.Block.one list ->
2424+ Renderer.Block.t list
+1-1
odoc/src/odoc/odoc_file.ml
···2929type t = { content : content; warnings : Odoc_model.Error.t list }
30303131(** Written at the top of the files. Checked when loading. *)
3232-let magic = "odoc-%%VERSION%%"
3232+let magic = "odoc-3.0.0"
33333434(** Exceptions while saving are allowed to leak. *)
3535let save_ file f =
···33\end{ocamlindent}%
44\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}Comment about X that should not appear when including X below.\end{ocamlindent}%
55\medbreak
66-\ocamltag{keyword}{include} \ocamltag{keyword}{module} \ocamltag{keyword}{type} \ocamltag{keyword}{of} \ocamltag{keyword}{struct} \ocamltag{keyword}{include} \hyperref[Include2-X]{\ocamlinlinecode{X}} \ocamltag{keyword}{end}\label{Include2--type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = int}\\
66+\ocamltag{keyword}{include} \ocamltag{keyword}{module} \ocamltag{keyword}{type} \ocamltag{keyword}{of} \ocamltag{keyword}{struct} \ocamltag{keyword}{include} \hyperref[Include2-X]{\ocamlinlinecode{Include2.\allowbreak{}X}} \ocamltag{keyword}{end}\label{Include2--type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = int}\\
77\label{Include2--module-Y}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Include2-Y]{\ocamlinlinecode{Y}}}\label{Include2-Y}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Include2-Y--type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\
88\end{ocamlindent}%
99\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}Top-comment of Y.\end{ocamlindent}%
1010\medbreak
1111-\label{Include2--module-Y_include_synopsis}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Include2-Y_include_synopsis]{\ocamlinlinecode{Y\_\allowbreak{}include\_\allowbreak{}synopsis}}}\label{Include2-Y_include_synopsis}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\ocamltag{keyword}{include} \ocamltag{keyword}{module} \ocamltag{keyword}{type} \ocamltag{keyword}{of} \ocamltag{keyword}{struct} \ocamltag{keyword}{include} \hyperref[Include2-Y]{\ocamlinlinecode{Y}} \ocamltag{keyword}{end}\label{Include2-Y_include_synopsis--type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = \hyperref[Include2-Y--type-t]{\ocamlinlinecode{Y.\allowbreak{}t}}}\\
1111+\label{Include2--module-Y_include_synopsis}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Include2-Y_include_synopsis]{\ocamlinlinecode{Y\_\allowbreak{}include\_\allowbreak{}synopsis}}}\label{Include2-Y_include_synopsis}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\ocamltag{keyword}{include} \ocamltag{keyword}{module} \ocamltag{keyword}{type} \ocamltag{keyword}{of} \ocamltag{keyword}{struct} \ocamltag{keyword}{include} \hyperref[Include2-Y]{\ocamlinlinecode{Include2.\allowbreak{}Y}} \ocamltag{keyword}{end}\label{Include2-Y_include_synopsis--type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = \hyperref[Include2-Y--type-t]{\ocamlinlinecode{Include2.\allowbreak{}Y.\allowbreak{}t}}}\\
1212\end{ocamlindent}%
1313\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}The \ocamlinlinecode{include Y} below should have the synopsis from \ocamlinlinecode{Y}'s top-comment attached to it.\end{ocamlindent}%
1414\medbreak
1515-\label{Include2--module-Y_include_doc}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Include2-Y_include_doc]{\ocamlinlinecode{Y\_\allowbreak{}include\_\allowbreak{}doc}}}\label{Include2-Y_include_doc}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}Doc attached to \ocamlinlinecode{include Y}. \ocamlinlinecode{Y}'s top-comment shouldn't appear here.\ocamltag{keyword}{include} \ocamltag{keyword}{module} \ocamltag{keyword}{type} \ocamltag{keyword}{of} \ocamltag{keyword}{struct} \ocamltag{keyword}{include} \hyperref[Include2-Y]{\ocamlinlinecode{Y}} \ocamltag{keyword}{end}\label{Include2-Y_include_doc--type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = \hyperref[Include2-Y--type-t]{\ocamlinlinecode{Y.\allowbreak{}t}}}\\
1515+\label{Include2--module-Y_include_doc}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Include2-Y_include_doc]{\ocamlinlinecode{Y\_\allowbreak{}include\_\allowbreak{}doc}}}\label{Include2-Y_include_doc}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}Doc attached to \ocamlinlinecode{include Y}. \ocamlinlinecode{Y}'s top-comment shouldn't appear here.\ocamltag{keyword}{include} \ocamltag{keyword}{module} \ocamltag{keyword}{type} \ocamltag{keyword}{of} \ocamltag{keyword}{struct} \ocamltag{keyword}{include} \hyperref[Include2-Y]{\ocamlinlinecode{Include2.\allowbreak{}Y}} \ocamltag{keyword}{end}\label{Include2-Y_include_doc--type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = \hyperref[Include2-Y--type-t]{\ocamlinlinecode{Include2.\allowbreak{}Y.\allowbreak{}t}}}\\
1616\end{ocamlindent}%
1717\ocamlcodefragment{\ocamltag{keyword}{end}}\\
1818
+4-4
odoc/test/generators/latex/Include_sections.tex
···1515\medbreak
1616Let's include \hyperref[Include_sections-module-type-Something]{\ocamlinlinecode{\ocamlinlinecode{Something}}[p\pageref*{Include_sections-module-type-Something}]} once
17171818-\ocamltag{keyword}{include} \hyperref[Include_sections-module-type-Something]{\ocamlinlinecode{Something}}\subsection{Something 1\label{Include_sections--something-1_2}}%
1818+\ocamltag{keyword}{include} \hyperref[Include_sections-module-type-Something]{\ocamlinlinecode{Include\_\allowbreak{}sections.\allowbreak{}Something}}\subsection{Something 1\label{Include_sections--something-1_2}}%
1919foo
20202121\subsubsection{Something 2\label{Include_sections--something-2_2}}%
···2525\subsection{Second include\label{Include_sections--second-include}}%
2626Let's include \hyperref[Include_sections-module-type-Something]{\ocamlinlinecode{\ocamlinlinecode{Something}}[p\pageref*{Include_sections-module-type-Something}]} a second time: the heading level should be shift here.
27272828-\ocamltag{keyword}{include} \hyperref[Include_sections-module-type-Something]{\ocamlinlinecode{Something}}\subsection{Something 1\label{Include_sections--something-1_3}}%
2828+\ocamltag{keyword}{include} \hyperref[Include_sections-module-type-Something]{\ocamlinlinecode{Include\_\allowbreak{}sections.\allowbreak{}Something}}\subsection{Something 1\label{Include_sections--something-1_3}}%
2929foo
30303131\subsubsection{Something 2\label{Include_sections--something-2_3}}%
···3535\subsubsection{Third include\label{Include_sections--third-include}}%
3636Shifted some more.
37373838-\ocamltag{keyword}{include} \hyperref[Include_sections-module-type-Something]{\ocamlinlinecode{Something}}\subsection{Something 1\label{Include_sections--something-1_4}}%
3838+\ocamltag{keyword}{include} \hyperref[Include_sections-module-type-Something]{\ocamlinlinecode{Include\_\allowbreak{}sections.\allowbreak{}Something}}\subsection{Something 1\label{Include_sections--something-1_4}}%
3939foo
40404141\subsubsection{Something 2\label{Include_sections--something-2_4}}%
···44444545And let's include it again, but without inlining it this time: the ToC shouldn't grow.
46464747-\ocamltag{keyword}{include} \hyperref[Include_sections-module-type-Something]{\ocamlinlinecode{Something}}\label{Include_sections--val-something}\ocamlcodefragment{\ocamltag{keyword}{val} something : unit}\\
4747+\ocamltag{keyword}{include} \hyperref[Include_sections-module-type-Something]{\ocamlinlinecode{Include\_\allowbreak{}sections.\allowbreak{}Something}}\label{Include_sections--val-something}\ocamlcodefragment{\ocamltag{keyword}{val} something : unit}\\
4848\subsection{Something 1\label{Include_sections--something-1_5}}%
4949foo
5050
+6-6
odoc/test/generators/latex/Labels.tex
···66\ocamlcodefragment{\ocamltag{keyword}{end}}\\
77\label{Labels--type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\begin{ocamlindent}Attached to type\end{ocamlindent}%
88\medbreak
99-\label{Labels--val-f}\ocamlcodefragment{\ocamltag{keyword}{val} f : \hyperref[Labels--type-t]{\ocamlinlinecode{t}}}\begin{ocamlindent}Attached to value\end{ocamlindent}%
99+\label{Labels--val-f}\ocamlcodefragment{\ocamltag{keyword}{val} f : \hyperref[Labels--type-t]{\ocamlinlinecode{Labels.\allowbreak{}t}}}\begin{ocamlindent}Attached to value\end{ocamlindent}%
1010\medbreak
1111-\label{Labels--val-e}\ocamlcodefragment{\ocamltag{keyword}{val} e : unit \ocamltag{arrow}{$\rightarrow$} \hyperref[Labels--type-t]{\ocamlinlinecode{t}}}\begin{ocamlindent}Attached to external\end{ocamlindent}%
1111+\label{Labels--val-e}\ocamlcodefragment{\ocamltag{keyword}{val} e : unit \ocamltag{arrow}{$\rightarrow$} \hyperref[Labels--type-t]{\ocamlinlinecode{Labels.\allowbreak{}t}}}\begin{ocamlindent}Attached to external\end{ocamlindent}%
1212\medbreak
1313\label{Labels--module-type-S}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[Labels-module-type-S]{\ocamlinlinecode{S}}}\label{Labels-module-type-S}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\subsubsection{Attached to module type\label{Labels-module-type-S--L6}}%
1414\end{ocamlindent}%
···2020\label{Labels--exception-E}\ocamlcodefragment{\ocamltag{keyword}{exception} \ocamltag{exception}{E}}\begin{ocamlindent}Attached to exception\end{ocamlindent}%
2121\medbreak
2222\label{Labels--type-x}\ocamlcodefragment{\ocamltag{keyword}{type} x = .\allowbreak{}.\allowbreak{}}\\
2323-\label{Labels--extension-decl-X}\ocamlcodefragment{\ocamltag{keyword}{type} \hyperref[Labels--type-x]{\ocamlinlinecode{x}} += }\\
2323+\label{Labels--extension-decl-X}\ocamlcodefragment{\ocamltag{keyword}{type} \hyperref[Labels--type-x]{\ocamlinlinecode{Labels.\allowbreak{}x}} += }\\
2424\begin{ocamltabular}{p{1.000\textwidth}}\ocamlcodefragment{| \ocamltag{extension}{X}}\label{Labels--extension-X}\\
2525\end{ocamltabular}%
2626\\
2727\begin{ocamlindent}Attached to extension\end{ocamlindent}%
2828\medbreak
2929-\label{Labels--module-S}\ocamlcodefragment{\ocamltag{keyword}{module} S := \hyperref[Labels-A]{\ocamlinlinecode{A}}}\begin{ocamlindent}Attached to module subst\end{ocamlindent}%
2929+\label{Labels--module-S}\ocamlcodefragment{\ocamltag{keyword}{module} S := \hyperref[Labels-A]{\ocamlinlinecode{Labels.\allowbreak{}A}}}\begin{ocamlindent}Attached to module subst\end{ocamlindent}%
3030\medbreak
3131-\label{Labels--type-s}\ocamlcodefragment{\ocamltag{keyword}{type} s := \hyperref[Labels--type-t]{\ocamlinlinecode{t}}}\begin{ocamlindent}Attached to type subst\end{ocamlindent}%
3131+\label{Labels--type-s}\ocamlcodefragment{\ocamltag{keyword}{type} s := \hyperref[Labels--type-t]{\ocamlinlinecode{Labels.\allowbreak{}t}}}\begin{ocamlindent}Attached to type subst\end{ocamlindent}%
3232\medbreak
3333\label{Labels--type-u}\ocamlcodefragment{\ocamltag{keyword}{type} u = }\\
3434\begin{ocamltabular}{p{0.500\textwidth}p{0.500\textwidth}}\ocamlcodefragment{| \ocamltag{constructor}{A'}}\label{Labels--type-u.A'}& Attached to constructor\\
3535\end{ocamltabular}%
3636\\
3737\label{Labels--type-v}\ocamlcodefragment{\ocamltag{keyword}{type} v = \{}\\
3838-\begin{ocamltabular}{p{0.500\textwidth}p{0.500\textwidth}}\ocamlinlinecode{f : \hyperref[Labels--type-t]{\ocamlinlinecode{t}};\allowbreak{}}\label{Labels--type-v.f}& Attached to field\\
3838+\begin{ocamltabular}{p{0.500\textwidth}p{0.500\textwidth}}\ocamlinlinecode{f : \hyperref[Labels--type-t]{\ocamlinlinecode{Labels.\allowbreak{}t}};\allowbreak{}}\label{Labels--type-v.f}& Attached to field\\
3939\end{ocamltabular}%
4040\\
4141\ocamlcodefragment{\}}\\
+2-2
odoc/test/generators/latex/Module.tex
···1212\end{ocamlindent}%
1313\ocamlcodefragment{\ocamltag{keyword}{end}}\\
1414\label{Module--module-type-S1}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} S1}\\
1515-\label{Module--module-type-S2}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} S2 = \hyperref[Module-module-type-S]{\ocamlinlinecode{S}}}\\
1515+\label{Module--module-type-S2}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} S2 = \hyperref[Module-module-type-S]{\ocamlinlinecode{Module.\allowbreak{}S}}}\\
1616\label{Module--module-type-S3}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[Module-module-type-S3]{\ocamlinlinecode{S3}}}\label{Module-module-type-S3}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Module-module-type-S3--type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = int}\\
1717\label{Module-module-type-S3--type-u}\ocamlcodefragment{\ocamltag{keyword}{type} u = string}\\
1818\label{Module-module-type-S3--type-v}\ocamlcodefragment{\ocamltag{keyword}{type} 'a v}\\
···4949\label{Module-module-type-S7--type-u}\ocamlcodefragment{\ocamltag{keyword}{type} u}\\
5050\label{Module-module-type-S7--type-v}\ocamlcodefragment{\ocamltag{keyword}{type} 'a v}\\
5151\label{Module-module-type-S7--type-w}\ocamlcodefragment{\ocamltag{keyword}{type} ('a,\allowbreak{} 'b) w}\\
5252-\label{Module-module-type-S7--module-M}\ocamlcodefragment{\ocamltag{keyword}{module} M = \hyperref[Module-M']{\ocamlinlinecode{M'}}}\\
5252+\label{Module-module-type-S7--module-M}\ocamlcodefragment{\ocamltag{keyword}{module} M = \hyperref[Module-M']{\ocamlinlinecode{Module.\allowbreak{}M'}}}\\
5353\end{ocamlindent}%
5454\ocamlcodefragment{\ocamltag{keyword}{end}}\\
5555\label{Module--module-type-S8}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[Module-module-type-S8]{\ocamlinlinecode{S8}}}\label{Module-module-type-S8}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Module-module-type-S8--type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\
+2-2
odoc/test/generators/latex/Module_type_alias.tex
···1212\label{Module_type_alias-module-type-B--type-b}\ocamlcodefragment{\ocamltag{keyword}{type} b}\\
1313\end{ocamlindent}%
1414\ocamlcodefragment{\ocamltag{keyword}{end}}\\
1515-\label{Module_type_alias--module-type-D}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} D = \hyperref[Module_type_alias-module-type-A]{\ocamlinlinecode{A}}}\\
1515+\label{Module_type_alias--module-type-D}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} D = \hyperref[Module_type_alias-module-type-A]{\ocamlinlinecode{Module\_\allowbreak{}type\_\allowbreak{}alias.\allowbreak{}A}}}\\
1616\label{Module_type_alias--module-type-E}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[Module_type_alias-module-type-E]{\ocamlinlinecode{E}}}\label{Module_type_alias-module-type-E}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\subsubsection{Parameters\label{Module_type_alias-module-type-E--parameters_2}}%
1717\label{Module_type_alias-module-type-E--argument-1-F}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Module_type_alias-module-type-E-argument-1-F]{\ocamlinlinecode{F}}}\label{Module_type_alias-module-type-E-argument-1-F}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Module_type_alias-module-type-E-argument-1-F--type-f}\ocamlcodefragment{\ocamltag{keyword}{type} f}\\
1818\end{ocamlindent}%
···3232\label{Module_type_alias-module-type-G--type-a}\ocamlcodefragment{\ocamltag{keyword}{type} a}\\
3333\end{ocamlindent}%
3434\ocamlcodefragment{\ocamltag{keyword}{end}}\\
3535-\label{Module_type_alias--module-type-I}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} I = \hyperref[Module_type_alias-module-type-B]{\ocamlinlinecode{B}}}\\
3535+\label{Module_type_alias--module-type-I}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} I = \hyperref[Module_type_alias-module-type-B]{\ocamlinlinecode{Module\_\allowbreak{}type\_\allowbreak{}alias.\allowbreak{}B}}}\\
36363737
···88\label{Nested-F-argument-1-Arg1--type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\begin{ocamlindent}Some type.\end{ocamlindent}%
99\medbreak
1010\subsubsection{Values\label{Nested-F-argument-1-Arg1--values}}%
1111-\label{Nested-F-argument-1-Arg1--val-y}\ocamlcodefragment{\ocamltag{keyword}{val} y : \hyperref[Nested-F-argument-1-Arg1--type-t]{\ocamlinlinecode{t}}}\begin{ocamlindent}The value of y.\end{ocamlindent}%
1111+\label{Nested-F-argument-1-Arg1--val-y}\ocamlcodefragment{\ocamltag{keyword}{val} y : \hyperref[Nested-F-argument-1-Arg1--type-t]{\ocamlinlinecode{Arg1.\allowbreak{}t}}}\begin{ocamlindent}The value of y.\end{ocamlindent}%
1212\medbreak
1313\end{ocamlindent}%
1414\ocamlcodefragment{\ocamltag{keyword}{end}}\\
+2-2
odoc/test/generators/latex/Nested.tex
···66\label{Nested-X--type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\begin{ocamlindent}Some type.\end{ocamlindent}%
77\medbreak
88\subsubsection{Values\label{Nested-X--values}}%
99-\label{Nested-X--val-x}\ocamlcodefragment{\ocamltag{keyword}{val} x : \hyperref[Nested-X--type-t]{\ocamlinlinecode{t}}}\begin{ocamlindent}The value of x.\end{ocamlindent}%
99+\label{Nested-X--val-x}\ocamlcodefragment{\ocamltag{keyword}{val} x : \hyperref[Nested-X--type-t]{\ocamlinlinecode{Nested.\allowbreak{}X.\allowbreak{}t}}}\begin{ocamlindent}The value of x.\end{ocamlindent}%
1010\medbreak
1111\end{ocamlindent}%
1212\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}This is module X.\end{ocamlindent}%
···2222\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}This is module type Y.\end{ocamlindent}%
2323\medbreak
2424\subsection{Functor\label{Nested--functor}}%
2525-\label{Nested--module-F}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Nested-F]{\ocamlinlinecode{F}}}\ocamlcodefragment{ (\hyperref[Nested-F-argument-1-Arg1]{\ocamlinlinecode{Arg1}} : \hyperref[Nested-module-type-Y]{\ocamlinlinecode{Y}}) (\hyperref[Nested-F-argument-2-Arg2]{\ocamlinlinecode{Arg2}} : \ocamltag{keyword}{sig} .\allowbreak{}.\allowbreak{}.\allowbreak{} \ocamltag{keyword}{end}) : \ocamltag{keyword}{sig} .\allowbreak{}.\allowbreak{}.\allowbreak{} \ocamltag{keyword}{end}}\begin{ocamlindent}This is a functor F.\end{ocamlindent}%
2525+\label{Nested--module-F}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Nested-F]{\ocamlinlinecode{F}}}\ocamlcodefragment{ (\hyperref[Nested-F-argument-1-Arg1]{\ocamlinlinecode{Arg1}} : \hyperref[Nested-module-type-Y]{\ocamlinlinecode{Nested.\allowbreak{}Y}}) (\hyperref[Nested-F-argument-2-Arg2]{\ocamlinlinecode{Arg2}} : \ocamltag{keyword}{sig} .\allowbreak{}.\allowbreak{}.\allowbreak{} \ocamltag{keyword}{end}) : \ocamltag{keyword}{sig} .\allowbreak{}.\allowbreak{}.\allowbreak{} \ocamltag{keyword}{end}}\begin{ocamlindent}This is a functor F.\end{ocamlindent}%
2626\medbreak
2727\subsection{Class\label{Nested--class}}%
2828\label{Nested--class-z}\ocamlcodefragment{\ocamltag{keyword}{class} \ocamltag{keyword}{virtual} \hyperref[Nested-class-z]{\ocamlinlinecode{z}}}\ocamlcodefragment{ : \ocamltag{keyword}{object} .\allowbreak{}.\allowbreak{}.\allowbreak{} \ocamltag{keyword}{end}}\begin{ocamlindent}This is class z.\end{ocamlindent}%
···11\section{Module \ocamlinlinecode{Dep5.\allowbreak{}Z}}\label{Ocamlary-Dep5-Z}%
22\label{Ocamlary-Dep5-Z--module-X}\ocamlcodefragment{\ocamltag{keyword}{module} X : \hyperref[Ocamlary-Dep5-argument-1-Arg--module-type-T]{\ocamlinlinecode{Arg.\allowbreak{}T}}}\\
33-\label{Ocamlary-Dep5-Z--module-Y}\ocamlcodefragment{\ocamltag{keyword}{module} Y = \hyperref[Ocamlary-Dep3]{\ocamlinlinecode{Dep3}}}\\
33+\label{Ocamlary-Dep5-Z--module-Y}\ocamlcodefragment{\ocamltag{keyword}{module} Y = \hyperref[Ocamlary-Dep3]{\ocamlinlinecode{Ocamlary.\allowbreak{}Dep3}}}\\
4455
···55\label{Ocamlary-FunctorTypeOf--argument-1-Collection}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-FunctorTypeOf-argument-1-Collection]{\ocamlinlinecode{Collection}}}\label{Ocamlary-FunctorTypeOf-argument-1-Collection}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-FunctorTypeOf-argument-1-Collection--type-collection}\ocamlcodefragment{\ocamltag{keyword}{type} collection}\begin{ocamlindent}This comment is for \ocamlinlinecode{collection}.\end{ocamlindent}%
66\medbreak
77\label{Ocamlary-FunctorTypeOf-argument-1-Collection--type-element}\ocamlcodefragment{\ocamltag{keyword}{type} element}\\
88-\label{Ocamlary-FunctorTypeOf-argument-1-Collection--module-InnerModuleA}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-FunctorTypeOf-argument-1-Collection-InnerModuleA]{\ocamlinlinecode{InnerModuleA}}}\label{Ocamlary-FunctorTypeOf-argument-1-Collection-InnerModuleA}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-FunctorTypeOf-argument-1-Collection-InnerModuleA--type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = \hyperref[Ocamlary-FunctorTypeOf-argument-1-Collection--type-collection]{\ocamlinlinecode{collection}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{t}.\end{ocamlindent}%
88+\label{Ocamlary-FunctorTypeOf-argument-1-Collection--module-InnerModuleA}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-FunctorTypeOf-argument-1-Collection-InnerModuleA]{\ocamlinlinecode{InnerModuleA}}}\label{Ocamlary-FunctorTypeOf-argument-1-Collection-InnerModuleA}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-FunctorTypeOf-argument-1-Collection-InnerModuleA--type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = \hyperref[Ocamlary-FunctorTypeOf-argument-1-Collection--type-collection]{\ocamlinlinecode{Collection.\allowbreak{}collection}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{t}.\end{ocamlindent}%
99\medbreak
1010-\label{Ocamlary-FunctorTypeOf-argument-1-Collection-InnerModuleA--module-InnerModuleA'}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-FunctorTypeOf-argument-1-Collection-InnerModuleA-InnerModuleA']{\ocamlinlinecode{InnerModuleA'}}}\label{Ocamlary-FunctorTypeOf-argument-1-Collection-InnerModuleA-InnerModuleA'}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-FunctorTypeOf-argument-1-Collection-InnerModuleA-InnerModuleA'--type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = (unit,\allowbreak{} unit) \hyperref[Ocamlary--type-a_function]{\ocamlinlinecode{a\_\allowbreak{}function}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{t}.\end{ocamlindent}%
1010+\label{Ocamlary-FunctorTypeOf-argument-1-Collection-InnerModuleA--module-InnerModuleA'}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-FunctorTypeOf-argument-1-Collection-InnerModuleA-InnerModuleA']{\ocamlinlinecode{InnerModuleA'}}}\label{Ocamlary-FunctorTypeOf-argument-1-Collection-InnerModuleA-InnerModuleA'}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-FunctorTypeOf-argument-1-Collection-InnerModuleA-InnerModuleA'--type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = (unit,\allowbreak{} unit) \hyperref[Ocamlary--type-a_function]{\ocamlinlinecode{Ocamlary.\allowbreak{}a\_\allowbreak{}function}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{t}.\end{ocamlindent}%
1111\medbreak
1212\end{ocamlindent}%
1313\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}This comment is for \ocamlinlinecode{InnerModuleA'}.\end{ocamlindent}%
1414\medbreak
1515-\label{Ocamlary-FunctorTypeOf-argument-1-Collection-InnerModuleA--module-type-InnerModuleTypeA'}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[Ocamlary-FunctorTypeOf-argument-1-Collection-InnerModuleA-module-type-InnerModuleTypeA']{\ocamlinlinecode{InnerModuleTypeA'}}}\label{Ocamlary-FunctorTypeOf-argument-1-Collection-InnerModuleA-module-type-InnerModuleTypeA'}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-FunctorTypeOf-argument-1-Collection-InnerModuleA-module-type-InnerModuleTypeA'--type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = \hyperref[Ocamlary-FunctorTypeOf-argument-1-Collection-InnerModuleA-InnerModuleA'--type-t]{\ocamlinlinecode{InnerModuleA'.\allowbreak{}t}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{t}.\end{ocamlindent}%
1515+\label{Ocamlary-FunctorTypeOf-argument-1-Collection-InnerModuleA--module-type-InnerModuleTypeA'}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[Ocamlary-FunctorTypeOf-argument-1-Collection-InnerModuleA-module-type-InnerModuleTypeA']{\ocamlinlinecode{InnerModuleTypeA'}}}\label{Ocamlary-FunctorTypeOf-argument-1-Collection-InnerModuleA-module-type-InnerModuleTypeA'}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-FunctorTypeOf-argument-1-Collection-InnerModuleA-module-type-InnerModuleTypeA'--type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = \hyperref[Ocamlary-FunctorTypeOf-argument-1-Collection-InnerModuleA-InnerModuleA'--type-t]{\ocamlinlinecode{Collection.\allowbreak{}InnerModuleA.\allowbreak{}InnerModuleA'.\allowbreak{}t}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{t}.\end{ocamlindent}%
1616\medbreak
1717\end{ocamlindent}%
1818\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}This comment is for \ocamlinlinecode{InnerModuleTypeA'}.\end{ocamlindent}%
···2020\end{ocamlindent}%
2121\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}This comment is for \ocamlinlinecode{InnerModuleA}.\end{ocamlindent}%
2222\medbreak
2323-\label{Ocamlary-FunctorTypeOf-argument-1-Collection--module-type-InnerModuleTypeA}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} InnerModuleTypeA = \hyperref[Ocamlary-FunctorTypeOf-argument-1-Collection-InnerModuleA-module-type-InnerModuleTypeA']{\ocamlinlinecode{InnerModuleA.\allowbreak{}InnerModuleTypeA'}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{InnerModuleTypeA}.\end{ocamlindent}%
2323+\label{Ocamlary-FunctorTypeOf-argument-1-Collection--module-type-InnerModuleTypeA}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} InnerModuleTypeA = \hyperref[Ocamlary-FunctorTypeOf-argument-1-Collection-InnerModuleA-module-type-InnerModuleTypeA']{\ocamlinlinecode{Collection.\allowbreak{}InnerModuleA.\allowbreak{}InnerModuleTypeA'}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{InnerModuleTypeA}.\end{ocamlindent}%
2424\medbreak
2525\end{ocamlindent}%
2626\ocamlcodefragment{\ocamltag{keyword}{end}}\\
···55\label{Ocamlary-Recollection--argument-1-C}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-Recollection-argument-1-C]{\ocamlinlinecode{C}}}\label{Ocamlary-Recollection-argument-1-C}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-Recollection-argument-1-C--type-collection}\ocamlcodefragment{\ocamltag{keyword}{type} collection}\begin{ocamlindent}This comment is for \ocamlinlinecode{collection}.\end{ocamlindent}%
66\medbreak
77\label{Ocamlary-Recollection-argument-1-C--type-element}\ocamlcodefragment{\ocamltag{keyword}{type} element}\\
88-\label{Ocamlary-Recollection-argument-1-C--module-InnerModuleA}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-Recollection-argument-1-C-InnerModuleA]{\ocamlinlinecode{InnerModuleA}}}\label{Ocamlary-Recollection-argument-1-C-InnerModuleA}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-Recollection-argument-1-C-InnerModuleA--type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = \hyperref[Ocamlary-Recollection-argument-1-C--type-collection]{\ocamlinlinecode{collection}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{t}.\end{ocamlindent}%
88+\label{Ocamlary-Recollection-argument-1-C--module-InnerModuleA}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-Recollection-argument-1-C-InnerModuleA]{\ocamlinlinecode{InnerModuleA}}}\label{Ocamlary-Recollection-argument-1-C-InnerModuleA}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-Recollection-argument-1-C-InnerModuleA--type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = \hyperref[Ocamlary-Recollection-argument-1-C--type-collection]{\ocamlinlinecode{C.\allowbreak{}collection}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{t}.\end{ocamlindent}%
99\medbreak
1010-\label{Ocamlary-Recollection-argument-1-C-InnerModuleA--module-InnerModuleA'}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-Recollection-argument-1-C-InnerModuleA-InnerModuleA']{\ocamlinlinecode{InnerModuleA'}}}\label{Ocamlary-Recollection-argument-1-C-InnerModuleA-InnerModuleA'}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-Recollection-argument-1-C-InnerModuleA-InnerModuleA'--type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = (unit,\allowbreak{} unit) \hyperref[Ocamlary--type-a_function]{\ocamlinlinecode{a\_\allowbreak{}function}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{t}.\end{ocamlindent}%
1010+\label{Ocamlary-Recollection-argument-1-C-InnerModuleA--module-InnerModuleA'}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-Recollection-argument-1-C-InnerModuleA-InnerModuleA']{\ocamlinlinecode{InnerModuleA'}}}\label{Ocamlary-Recollection-argument-1-C-InnerModuleA-InnerModuleA'}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-Recollection-argument-1-C-InnerModuleA-InnerModuleA'--type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = (unit,\allowbreak{} unit) \hyperref[Ocamlary--type-a_function]{\ocamlinlinecode{Ocamlary.\allowbreak{}a\_\allowbreak{}function}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{t}.\end{ocamlindent}%
1111\medbreak
1212\end{ocamlindent}%
1313\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}This comment is for \ocamlinlinecode{InnerModuleA'}.\end{ocamlindent}%
1414\medbreak
1515-\label{Ocamlary-Recollection-argument-1-C-InnerModuleA--module-type-InnerModuleTypeA'}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[Ocamlary-Recollection-argument-1-C-InnerModuleA-module-type-InnerModuleTypeA']{\ocamlinlinecode{InnerModuleTypeA'}}}\label{Ocamlary-Recollection-argument-1-C-InnerModuleA-module-type-InnerModuleTypeA'}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-Recollection-argument-1-C-InnerModuleA-module-type-InnerModuleTypeA'--type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = \hyperref[Ocamlary-Recollection-argument-1-C-InnerModuleA-InnerModuleA'--type-t]{\ocamlinlinecode{InnerModuleA'.\allowbreak{}t}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{t}.\end{ocamlindent}%
1515+\label{Ocamlary-Recollection-argument-1-C-InnerModuleA--module-type-InnerModuleTypeA'}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[Ocamlary-Recollection-argument-1-C-InnerModuleA-module-type-InnerModuleTypeA']{\ocamlinlinecode{InnerModuleTypeA'}}}\label{Ocamlary-Recollection-argument-1-C-InnerModuleA-module-type-InnerModuleTypeA'}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-Recollection-argument-1-C-InnerModuleA-module-type-InnerModuleTypeA'--type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = \hyperref[Ocamlary-Recollection-argument-1-C-InnerModuleA-InnerModuleA'--type-t]{\ocamlinlinecode{C.\allowbreak{}InnerModuleA.\allowbreak{}InnerModuleA'.\allowbreak{}t}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{t}.\end{ocamlindent}%
1616\medbreak
1717\end{ocamlindent}%
1818\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}This comment is for \ocamlinlinecode{InnerModuleTypeA'}.\end{ocamlindent}%
···2020\end{ocamlindent}%
2121\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}This comment is for \ocamlinlinecode{InnerModuleA}.\end{ocamlindent}%
2222\medbreak
2323-\label{Ocamlary-Recollection-argument-1-C--module-type-InnerModuleTypeA}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} InnerModuleTypeA = \hyperref[Ocamlary-Recollection-argument-1-C-InnerModuleA-module-type-InnerModuleTypeA']{\ocamlinlinecode{InnerModuleA.\allowbreak{}InnerModuleTypeA'}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{InnerModuleTypeA}.\end{ocamlindent}%
2323+\label{Ocamlary-Recollection-argument-1-C--module-type-InnerModuleTypeA}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} InnerModuleTypeA = \hyperref[Ocamlary-Recollection-argument-1-C-InnerModuleA-module-type-InnerModuleTypeA']{\ocamlinlinecode{C.\allowbreak{}InnerModuleA.\allowbreak{}InnerModuleTypeA'}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{InnerModuleTypeA}.\end{ocamlindent}%
2424\medbreak
2525\end{ocamlindent}%
2626\ocamlcodefragment{\ocamltag{keyword}{end}}\\
···3030\label{Ocamlary-Recollection--type-element}\ocamlcodefragment{\ocamltag{keyword}{type} element = \hyperref[Ocamlary-Recollection-argument-1-C--type-collection]{\ocamlinlinecode{C.\allowbreak{}collection}}}\\
3131\label{Ocamlary-Recollection--module-InnerModuleA}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-Recollection-InnerModuleA]{\ocamlinlinecode{InnerModuleA}}}\label{Ocamlary-Recollection-InnerModuleA}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-Recollection-InnerModuleA--type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = \hyperref[Ocamlary-Recollection--type-collection]{\ocamlinlinecode{collection}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{t}.\end{ocamlindent}%
3232\medbreak
3333-\label{Ocamlary-Recollection-InnerModuleA--module-InnerModuleA'}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-Recollection-InnerModuleA-InnerModuleA']{\ocamlinlinecode{InnerModuleA'}}}\label{Ocamlary-Recollection-InnerModuleA-InnerModuleA'}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-Recollection-InnerModuleA-InnerModuleA'--type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = (unit,\allowbreak{} unit) \hyperref[Ocamlary--type-a_function]{\ocamlinlinecode{a\_\allowbreak{}function}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{t}.\end{ocamlindent}%
3333+\label{Ocamlary-Recollection-InnerModuleA--module-InnerModuleA'}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-Recollection-InnerModuleA-InnerModuleA']{\ocamlinlinecode{InnerModuleA'}}}\label{Ocamlary-Recollection-InnerModuleA-InnerModuleA'}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-Recollection-InnerModuleA-InnerModuleA'--type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = (unit,\allowbreak{} unit) \hyperref[Ocamlary--type-a_function]{\ocamlinlinecode{Ocamlary.\allowbreak{}a\_\allowbreak{}function}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{t}.\end{ocamlindent}%
3434\medbreak
3535\end{ocamlindent}%
3636\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}This comment is for \ocamlinlinecode{InnerModuleA'}.\end{ocamlindent}%
3737\medbreak
3838-\label{Ocamlary-Recollection-InnerModuleA--module-type-InnerModuleTypeA'}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[Ocamlary-Recollection-InnerModuleA-module-type-InnerModuleTypeA']{\ocamlinlinecode{InnerModuleTypeA'}}}\label{Ocamlary-Recollection-InnerModuleA-module-type-InnerModuleTypeA'}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-Recollection-InnerModuleA-module-type-InnerModuleTypeA'--type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = \hyperref[Ocamlary-Recollection-InnerModuleA-InnerModuleA'--type-t]{\ocamlinlinecode{InnerModuleA'.\allowbreak{}t}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{t}.\end{ocamlindent}%
3838+\label{Ocamlary-Recollection-InnerModuleA--module-type-InnerModuleTypeA'}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[Ocamlary-Recollection-InnerModuleA-module-type-InnerModuleTypeA']{\ocamlinlinecode{InnerModuleTypeA'}}}\label{Ocamlary-Recollection-InnerModuleA-module-type-InnerModuleTypeA'}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-Recollection-InnerModuleA-module-type-InnerModuleTypeA'--type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = \hyperref[Ocamlary-Recollection-InnerModuleA-InnerModuleA'--type-t]{\ocamlinlinecode{InnerModuleA.\allowbreak{}InnerModuleA'.\allowbreak{}t}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{t}.\end{ocamlindent}%
3939\medbreak
4040\end{ocamlindent}%
4141\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}This comment is for \ocamlinlinecode{InnerModuleTypeA'}.\end{ocamlindent}%
+1-1
odoc/test/generators/latex/Ocamlary.With3.tex
···11\section{Module \ocamlinlinecode{Ocamlary.\allowbreak{}With3}}\label{Ocamlary-With3}%
22-\label{Ocamlary-With3--module-M}\ocamlcodefragment{\ocamltag{keyword}{module} M = \hyperref[Ocamlary-With2]{\ocamlinlinecode{With2}}}\\
22+\label{Ocamlary-With3--module-M}\ocamlcodefragment{\ocamltag{keyword}{module} M = \hyperref[Ocamlary-With2]{\ocamlinlinecode{Ocamlary.\allowbreak{}With2}}}\\
33\label{Ocamlary-With3--module-N}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-With3-N]{\ocamlinlinecode{N}}}\ocamlcodefragment{ : \hyperref[Ocamlary-With2-module-type-S]{\ocamlinlinecode{M.\allowbreak{}S}}}\\
4455\input{Ocamlary.With3.N.tex}
···6868\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}An ambiguous, misnamed module type\end{ocamlindent}%
6969\medbreak
7070\subsection{Section 9000\label{Ocamlary--s9000}}%
7171-\label{Ocamlary--module-EmptyAlias}\ocamlcodefragment{\ocamltag{keyword}{module} EmptyAlias = \hyperref[Ocamlary-Empty]{\ocamlinlinecode{Empty}}}\begin{ocamlindent}A plain module alias of \ocamlinlinecode{Empty}\end{ocamlindent}%
7171+\label{Ocamlary--module-EmptyAlias}\ocamlcodefragment{\ocamltag{keyword}{module} EmptyAlias = \hyperref[Ocamlary-Empty]{\ocamlinlinecode{Ocamlary.\allowbreak{}Empty}}}\begin{ocamlindent}A plain module alias of \ocamlinlinecode{Empty}\end{ocamlindent}%
7272\medbreak
7373\subsubsection{EmptySig\label{Ocamlary--emptySig}}%
7474\label{Ocamlary--module-type-EmptySig}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[Ocamlary-module-type-EmptySig]{\ocamlinlinecode{EmptySig}}}\label{Ocamlary-module-type-EmptySig}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\end{ocamlindent}%
7575\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}A plain, empty module signature\end{ocamlindent}%
7676\medbreak
7777-\label{Ocamlary--module-type-EmptySigAlias}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} EmptySigAlias = \hyperref[Ocamlary-module-type-EmptySig]{\ocamlinlinecode{EmptySig}}}\begin{ocamlindent}A plain, empty module signature alias of\end{ocamlindent}%
7777+\label{Ocamlary--module-type-EmptySigAlias}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} EmptySigAlias = \hyperref[Ocamlary-module-type-EmptySig]{\ocamlinlinecode{Ocamlary.\allowbreak{}EmptySig}}}\begin{ocamlindent}A plain, empty module signature alias of\end{ocamlindent}%
7878\medbreak
7979-\label{Ocamlary--module-ModuleWithSignature}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-ModuleWithSignature]{\ocamlinlinecode{ModuleWithSignature}}}\ocamlcodefragment{ : \hyperref[Ocamlary-module-type-EmptySig]{\ocamlinlinecode{EmptySig}}}\begin{ocamlindent}A plain module of a signature of \hyperref[Ocamlary-module-type-EmptySig]{\ocamlinlinecode{\ocamlinlinecode{EmptySig}}[p\pageref*{Ocamlary-module-type-EmptySig}]} (reference)\end{ocamlindent}%
7979+\label{Ocamlary--module-ModuleWithSignature}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-ModuleWithSignature]{\ocamlinlinecode{ModuleWithSignature}}}\ocamlcodefragment{ : \hyperref[Ocamlary-module-type-EmptySig]{\ocamlinlinecode{Ocamlary.\allowbreak{}EmptySig}}}\begin{ocamlindent}A plain module of a signature of \hyperref[Ocamlary-module-type-EmptySig]{\ocamlinlinecode{\ocamlinlinecode{EmptySig}}[p\pageref*{Ocamlary-module-type-EmptySig}]} (reference)\end{ocamlindent}%
8080\medbreak
8181-\label{Ocamlary--module-ModuleWithSignatureAlias}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-ModuleWithSignatureAlias]{\ocamlinlinecode{ModuleWithSignatureAlias}}}\ocamlcodefragment{ : \hyperref[Ocamlary-module-type-EmptySig]{\ocamlinlinecode{EmptySigAlias}}}\begin{ocamlindent}A plain module with an alias signature\end{ocamlindent}%
8181+\label{Ocamlary--module-ModuleWithSignatureAlias}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-ModuleWithSignatureAlias]{\ocamlinlinecode{ModuleWithSignatureAlias}}}\ocamlcodefragment{ : \hyperref[Ocamlary-module-type-EmptySig]{\ocamlinlinecode{Ocamlary.\allowbreak{}EmptySigAlias}}}\begin{ocamlindent}A plain module with an alias signature\end{ocamlindent}%
8282\medbreak
8383\label{Ocamlary--module-One}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-One]{\ocamlinlinecode{One}}}\label{Ocamlary-One}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-One--type-one}\ocamlcodefragment{\ocamltag{keyword}{type} one}\\
8484\end{ocamlindent}%
···143143\item[{returns}]{the \ocamlinlinecode{y} coordinate}\end{description}%
144144\end{ocamlindent}%
145145\medbreak
146146-\label{Ocamlary--val-fun_fun_fun}\ocamlcodefragment{\ocamltag{keyword}{val} fun\_\allowbreak{}fun\_\allowbreak{}fun : ((int,\allowbreak{} int) \hyperref[Ocamlary--type-a_function]{\ocamlinlinecode{a\_\allowbreak{}function}},\allowbreak{} (unit,\allowbreak{} unit) \hyperref[Ocamlary--type-a_function]{\ocamlinlinecode{a\_\allowbreak{}function}}) \hyperref[Ocamlary--type-a_function]{\ocamlinlinecode{a\_\allowbreak{}function}}}\\
146146+\label{Ocamlary--val-fun_fun_fun}\ocamlcodefragment{\ocamltag{keyword}{val} fun\_\allowbreak{}fun\_\allowbreak{}fun :
147147+ ((int,\allowbreak{} int) \hyperref[Ocamlary--type-a_function]{\ocamlinlinecode{Ocamlary.\allowbreak{}a\_\allowbreak{}function}},\allowbreak{} (unit,\allowbreak{} unit) \hyperref[Ocamlary--type-a_function]{\ocamlinlinecode{Ocamlary.\allowbreak{}a\_\allowbreak{}function}})
148148+ \hyperref[Ocamlary--type-a_function]{\ocamlinlinecode{Ocamlary.\allowbreak{}a\_\allowbreak{}function}}}\\
147149\label{Ocamlary--val-fun_maybe}\ocamlcodefragment{\ocamltag{keyword}{val} fun\_\allowbreak{}maybe : \ocamltag{optlabel}{?yes}:unit \ocamltag{arrow}{$\rightarrow$} unit \ocamltag{arrow}{$\rightarrow$} int}\\
148150\label{Ocamlary--val-not_found}\ocamlcodefragment{\ocamltag{keyword}{val} not\_\allowbreak{}found : unit \ocamltag{arrow}{$\rightarrow$} unit}\begin{ocamlindent}\begin{description}\kern-\topsep
149151\makeatletter\advance\@topsepadd-\topsep\makeatother% topsep is hardcoded
···205207\label{Ocamlary--module-CollectionModule}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-CollectionModule]{\ocamlinlinecode{CollectionModule}}}\label{Ocamlary-CollectionModule}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-CollectionModule--type-collection}\ocamlcodefragment{\ocamltag{keyword}{type} collection}\begin{ocamlindent}This comment is for \ocamlinlinecode{collection}.\end{ocamlindent}%
206208\medbreak
207209\label{Ocamlary-CollectionModule--type-element}\ocamlcodefragment{\ocamltag{keyword}{type} element}\\
208208-\label{Ocamlary-CollectionModule--module-InnerModuleA}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-CollectionModule-InnerModuleA]{\ocamlinlinecode{InnerModuleA}}}\label{Ocamlary-CollectionModule-InnerModuleA}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-CollectionModule-InnerModuleA--type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = \hyperref[Ocamlary-CollectionModule--type-collection]{\ocamlinlinecode{collection}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{t}.\end{ocamlindent}%
210210+\label{Ocamlary-CollectionModule--module-InnerModuleA}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-CollectionModule-InnerModuleA]{\ocamlinlinecode{InnerModuleA}}}\label{Ocamlary-CollectionModule-InnerModuleA}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-CollectionModule-InnerModuleA--type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = \hyperref[Ocamlary-CollectionModule--type-collection]{\ocamlinlinecode{Ocamlary.\allowbreak{}CollectionModule.\allowbreak{}collection}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{t}.\end{ocamlindent}%
209211\medbreak
210210-\label{Ocamlary-CollectionModule-InnerModuleA--module-InnerModuleA'}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-CollectionModule-InnerModuleA-InnerModuleA']{\ocamlinlinecode{InnerModuleA'}}}\label{Ocamlary-CollectionModule-InnerModuleA-InnerModuleA'}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-CollectionModule-InnerModuleA-InnerModuleA'--type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = (unit,\allowbreak{} unit) \hyperref[Ocamlary--type-a_function]{\ocamlinlinecode{a\_\allowbreak{}function}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{t}.\end{ocamlindent}%
212212+\label{Ocamlary-CollectionModule-InnerModuleA--module-InnerModuleA'}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-CollectionModule-InnerModuleA-InnerModuleA']{\ocamlinlinecode{InnerModuleA'}}}\label{Ocamlary-CollectionModule-InnerModuleA-InnerModuleA'}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-CollectionModule-InnerModuleA-InnerModuleA'--type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = (unit,\allowbreak{} unit) \hyperref[Ocamlary--type-a_function]{\ocamlinlinecode{Ocamlary.\allowbreak{}a\_\allowbreak{}function}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{t}.\end{ocamlindent}%
211213\medbreak
212214\end{ocamlindent}%
213215\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}This comment is for \ocamlinlinecode{InnerModuleA'}.\end{ocamlindent}%
214216\medbreak
215215-\label{Ocamlary-CollectionModule-InnerModuleA--module-type-InnerModuleTypeA'}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[Ocamlary-CollectionModule-InnerModuleA-module-type-InnerModuleTypeA']{\ocamlinlinecode{InnerModuleTypeA'}}}\label{Ocamlary-CollectionModule-InnerModuleA-module-type-InnerModuleTypeA'}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-CollectionModule-InnerModuleA-module-type-InnerModuleTypeA'--type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = \hyperref[Ocamlary-CollectionModule-InnerModuleA-InnerModuleA'--type-t]{\ocamlinlinecode{InnerModuleA'.\allowbreak{}t}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{t}.\end{ocamlindent}%
217217+\label{Ocamlary-CollectionModule-InnerModuleA--module-type-InnerModuleTypeA'}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[Ocamlary-CollectionModule-InnerModuleA-module-type-InnerModuleTypeA']{\ocamlinlinecode{InnerModuleTypeA'}}}\label{Ocamlary-CollectionModule-InnerModuleA-module-type-InnerModuleTypeA'}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-CollectionModule-InnerModuleA-module-type-InnerModuleTypeA'--type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = \hyperref[Ocamlary-CollectionModule-InnerModuleA-InnerModuleA'--type-t]{\ocamlinlinecode{Ocamlary.\allowbreak{}CollectionModule.\allowbreak{}InnerModuleA.\allowbreak{}InnerModuleA'.\allowbreak{}t}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{t}.\end{ocamlindent}%
216218\medbreak
217219\end{ocamlindent}%
218220\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}This comment is for \ocamlinlinecode{InnerModuleTypeA'}.\end{ocamlindent}%
···220222\end{ocamlindent}%
221223\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}This comment is for \ocamlinlinecode{InnerModuleA}.\end{ocamlindent}%
222224\medbreak
223223-\label{Ocamlary-CollectionModule--module-type-InnerModuleTypeA}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} InnerModuleTypeA = \hyperref[Ocamlary-CollectionModule-InnerModuleA-module-type-InnerModuleTypeA']{\ocamlinlinecode{InnerModuleA.\allowbreak{}InnerModuleTypeA'}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{InnerModuleTypeA}.\end{ocamlindent}%
225225+\label{Ocamlary-CollectionModule--module-type-InnerModuleTypeA}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} InnerModuleTypeA =
226226+ \hyperref[Ocamlary-CollectionModule-InnerModuleA-module-type-InnerModuleTypeA']{\ocamlinlinecode{Ocamlary.\allowbreak{}CollectionModule.\allowbreak{}InnerModuleA.\allowbreak{}InnerModuleTypeA'}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{InnerModuleTypeA}.\end{ocamlindent}%
224227\medbreak
225228\end{ocamlindent}%
226229\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}This comment is for \ocamlinlinecode{CollectionModule}.\end{ocamlindent}%
···230233\label{Ocamlary-module-type-COLLECTION--type-element}\ocamlcodefragment{\ocamltag{keyword}{type} element}\\
231234\label{Ocamlary-module-type-COLLECTION--module-InnerModuleA}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-module-type-COLLECTION-InnerModuleA]{\ocamlinlinecode{InnerModuleA}}}\label{Ocamlary-module-type-COLLECTION-InnerModuleA}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-module-type-COLLECTION-InnerModuleA--type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = \hyperref[Ocamlary-module-type-COLLECTION--type-collection]{\ocamlinlinecode{collection}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{t}.\end{ocamlindent}%
232235\medbreak
233233-\label{Ocamlary-module-type-COLLECTION-InnerModuleA--module-InnerModuleA'}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-module-type-COLLECTION-InnerModuleA-InnerModuleA']{\ocamlinlinecode{InnerModuleA'}}}\label{Ocamlary-module-type-COLLECTION-InnerModuleA-InnerModuleA'}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-module-type-COLLECTION-InnerModuleA-InnerModuleA'--type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = (unit,\allowbreak{} unit) \hyperref[Ocamlary--type-a_function]{\ocamlinlinecode{a\_\allowbreak{}function}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{t}.\end{ocamlindent}%
236236+\label{Ocamlary-module-type-COLLECTION-InnerModuleA--module-InnerModuleA'}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-module-type-COLLECTION-InnerModuleA-InnerModuleA']{\ocamlinlinecode{InnerModuleA'}}}\label{Ocamlary-module-type-COLLECTION-InnerModuleA-InnerModuleA'}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-module-type-COLLECTION-InnerModuleA-InnerModuleA'--type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = (unit,\allowbreak{} unit) \hyperref[Ocamlary--type-a_function]{\ocamlinlinecode{Ocamlary.\allowbreak{}a\_\allowbreak{}function}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{t}.\end{ocamlindent}%
234237\medbreak
235238\end{ocamlindent}%
236239\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}This comment is for \ocamlinlinecode{InnerModuleA'}.\end{ocamlindent}%
237240\medbreak
238238-\label{Ocamlary-module-type-COLLECTION-InnerModuleA--module-type-InnerModuleTypeA'}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[Ocamlary-module-type-COLLECTION-InnerModuleA-module-type-InnerModuleTypeA']{\ocamlinlinecode{InnerModuleTypeA'}}}\label{Ocamlary-module-type-COLLECTION-InnerModuleA-module-type-InnerModuleTypeA'}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-module-type-COLLECTION-InnerModuleA-module-type-InnerModuleTypeA'--type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = \hyperref[Ocamlary-module-type-COLLECTION-InnerModuleA-InnerModuleA'--type-t]{\ocamlinlinecode{InnerModuleA'.\allowbreak{}t}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{t}.\end{ocamlindent}%
241241+\label{Ocamlary-module-type-COLLECTION-InnerModuleA--module-type-InnerModuleTypeA'}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[Ocamlary-module-type-COLLECTION-InnerModuleA-module-type-InnerModuleTypeA']{\ocamlinlinecode{InnerModuleTypeA'}}}\label{Ocamlary-module-type-COLLECTION-InnerModuleA-module-type-InnerModuleTypeA'}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-module-type-COLLECTION-InnerModuleA-module-type-InnerModuleTypeA'--type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = \hyperref[Ocamlary-module-type-COLLECTION-InnerModuleA-InnerModuleA'--type-t]{\ocamlinlinecode{InnerModuleA.\allowbreak{}InnerModuleA'.\allowbreak{}t}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{t}.\end{ocamlindent}%
239242\medbreak
240243\end{ocamlindent}%
241244\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}This comment is for \ocamlinlinecode{InnerModuleTypeA'}.\end{ocamlindent}%
···249252\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}module type of\end{ocamlindent}%
250253\medbreak
251254\label{Ocamlary--module-Recollection}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-Recollection]{\ocamlinlinecode{Recollection}}}\ocamlcodefragment{
252252- (\hyperref[Ocamlary-Recollection-argument-1-C]{\ocamlinlinecode{C}} : \hyperref[Ocamlary-module-type-COLLECTION]{\ocamlinlinecode{COLLECTION}}) :
253253- \hyperref[Ocamlary-module-type-COLLECTION]{\ocamlinlinecode{COLLECTION}}
255255+ (\hyperref[Ocamlary-Recollection-argument-1-C]{\ocamlinlinecode{C}} : \hyperref[Ocamlary-module-type-COLLECTION]{\ocamlinlinecode{Ocamlary.\allowbreak{}COLLECTION}}) :
256256+ \hyperref[Ocamlary-module-type-COLLECTION]{\ocamlinlinecode{Ocamlary.\allowbreak{}COLLECTION}}
254257 \ocamltag{keyword}{with} \ocamltag{keyword}{type} \hyperref[Ocamlary-module-type-COLLECTION--type-collection]{\ocamlinlinecode{collection}} = \hyperref[Ocamlary-Recollection-argument-1-C--type-element]{\ocamlinlinecode{C.\allowbreak{}element}} list
255258 \ocamltag{keyword}{and} \ocamltag{keyword}{type} \hyperref[Ocamlary-module-type-COLLECTION--type-element]{\ocamlinlinecode{element}} = \hyperref[Ocamlary-Recollection-argument-1-C--type-collection]{\ocamlinlinecode{C.\allowbreak{}collection}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{CollectionModule}.\end{ocamlindent}%
256259\medbreak
257257-\label{Ocamlary--module-type-MMM}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[Ocamlary-module-type-MMM]{\ocamlinlinecode{MMM}}}\label{Ocamlary-module-type-MMM}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-module-type-MMM--module-C}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-module-type-MMM-C]{\ocamlinlinecode{C}}}\ocamlcodefragment{ : \hyperref[Ocamlary-module-type-COLLECTION]{\ocamlinlinecode{COLLECTION}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{CollectionModule}.\end{ocamlindent}%
260260+\label{Ocamlary--module-type-MMM}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[Ocamlary-module-type-MMM]{\ocamlinlinecode{MMM}}}\label{Ocamlary-module-type-MMM}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-module-type-MMM--module-C}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-module-type-MMM-C]{\ocamlinlinecode{C}}}\ocamlcodefragment{ : \hyperref[Ocamlary-module-type-COLLECTION]{\ocamlinlinecode{Ocamlary.\allowbreak{}COLLECTION}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{CollectionModule}.\end{ocamlindent}%
258261\medbreak
259262\end{ocamlindent}%
260263\ocamlcodefragment{\ocamltag{keyword}{end}}\\
261261-\label{Ocamlary--module-type-RECOLLECTION}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[Ocamlary-module-type-RECOLLECTION]{\ocamlinlinecode{RECOLLECTION}}}\label{Ocamlary-module-type-RECOLLECTION}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-module-type-RECOLLECTION--module-C}\ocamlcodefragment{\ocamltag{keyword}{module} C = \hyperref[Ocamlary-Recollection]{\ocamlinlinecode{Recollection(CollectionModule)}}}\\
264264+\label{Ocamlary--module-type-RECOLLECTION}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[Ocamlary-module-type-RECOLLECTION]{\ocamlinlinecode{RECOLLECTION}}}\label{Ocamlary-module-type-RECOLLECTION}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-module-type-RECOLLECTION--module-C}\ocamlcodefragment{\ocamltag{keyword}{module} C = \hyperref[Ocamlary-Recollection]{\ocamlinlinecode{Ocamlary.\allowbreak{}Recollection(Ocamlary.\allowbreak{}CollectionModule)}}}\\
262265\end{ocamlindent}%
263266\ocamlcodefragment{\ocamltag{keyword}{end}}\\
264264-\label{Ocamlary--module-type-RecollectionModule}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[Ocamlary-module-type-RecollectionModule]{\ocamlinlinecode{RecollectionModule}}}\label{Ocamlary-module-type-RecollectionModule}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\ocamltag{keyword}{include} \ocamltag{keyword}{sig} .\allowbreak{}.\allowbreak{}.\allowbreak{} \ocamltag{keyword}{end}\label{Ocamlary-module-type-RecollectionModule--type-collection}\ocamlcodefragment{\ocamltag{keyword}{type} collection = \hyperref[Ocamlary-CollectionModule--type-element]{\ocamlinlinecode{CollectionModule.\allowbreak{}element}} list}\\
265265-\label{Ocamlary-module-type-RecollectionModule--type-element}\ocamlcodefragment{\ocamltag{keyword}{type} element = \hyperref[Ocamlary-CollectionModule--type-collection]{\ocamlinlinecode{CollectionModule.\allowbreak{}collection}}}\\
267267+\label{Ocamlary--module-type-RecollectionModule}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[Ocamlary-module-type-RecollectionModule]{\ocamlinlinecode{RecollectionModule}}}\label{Ocamlary-module-type-RecollectionModule}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\ocamltag{keyword}{include} \ocamltag{keyword}{sig} .\allowbreak{}.\allowbreak{}.\allowbreak{} \ocamltag{keyword}{end}\label{Ocamlary-module-type-RecollectionModule--type-collection}\ocamlcodefragment{\ocamltag{keyword}{type} collection = \hyperref[Ocamlary-CollectionModule--type-element]{\ocamlinlinecode{Ocamlary.\allowbreak{}CollectionModule.\allowbreak{}element}} list}\\
268268+\label{Ocamlary-module-type-RecollectionModule--type-element}\ocamlcodefragment{\ocamltag{keyword}{type} element = \hyperref[Ocamlary-CollectionModule--type-collection]{\ocamlinlinecode{Ocamlary.\allowbreak{}CollectionModule.\allowbreak{}collection}}}\\
266269\label{Ocamlary-module-type-RecollectionModule--module-InnerModuleA}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-module-type-RecollectionModule-InnerModuleA]{\ocamlinlinecode{InnerModuleA}}}\label{Ocamlary-module-type-RecollectionModule-InnerModuleA}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-module-type-RecollectionModule-InnerModuleA--type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = \hyperref[Ocamlary-module-type-RecollectionModule--type-collection]{\ocamlinlinecode{collection}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{t}.\end{ocamlindent}%
267270\medbreak
268268-\label{Ocamlary-module-type-RecollectionModule-InnerModuleA--module-InnerModuleA'}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-module-type-RecollectionModule-InnerModuleA-InnerModuleA']{\ocamlinlinecode{InnerModuleA'}}}\label{Ocamlary-module-type-RecollectionModule-InnerModuleA-InnerModuleA'}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-module-type-RecollectionModule-InnerModuleA-InnerModuleA'--type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = (unit,\allowbreak{} unit) \hyperref[Ocamlary--type-a_function]{\ocamlinlinecode{a\_\allowbreak{}function}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{t}.\end{ocamlindent}%
271271+\label{Ocamlary-module-type-RecollectionModule-InnerModuleA--module-InnerModuleA'}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-module-type-RecollectionModule-InnerModuleA-InnerModuleA']{\ocamlinlinecode{InnerModuleA'}}}\label{Ocamlary-module-type-RecollectionModule-InnerModuleA-InnerModuleA'}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-module-type-RecollectionModule-InnerModuleA-InnerModuleA'--type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = (unit,\allowbreak{} unit) \hyperref[Ocamlary--type-a_function]{\ocamlinlinecode{Ocamlary.\allowbreak{}a\_\allowbreak{}function}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{t}.\end{ocamlindent}%
269272\medbreak
270273\end{ocamlindent}%
271274\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}This comment is for \ocamlinlinecode{InnerModuleA'}.\end{ocamlindent}%
272275\medbreak
273273-\label{Ocamlary-module-type-RecollectionModule-InnerModuleA--module-type-InnerModuleTypeA'}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[Ocamlary-module-type-RecollectionModule-InnerModuleA-module-type-InnerModuleTypeA']{\ocamlinlinecode{InnerModuleTypeA'}}}\label{Ocamlary-module-type-RecollectionModule-InnerModuleA-module-type-InnerModuleTypeA'}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-module-type-RecollectionModule-InnerModuleA-module-type-InnerModuleTypeA'--type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = \hyperref[Ocamlary-module-type-RecollectionModule-InnerModuleA-InnerModuleA'--type-t]{\ocamlinlinecode{InnerModuleA'.\allowbreak{}t}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{t}.\end{ocamlindent}%
276276+\label{Ocamlary-module-type-RecollectionModule-InnerModuleA--module-type-InnerModuleTypeA'}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[Ocamlary-module-type-RecollectionModule-InnerModuleA-module-type-InnerModuleTypeA']{\ocamlinlinecode{InnerModuleTypeA'}}}\label{Ocamlary-module-type-RecollectionModule-InnerModuleA-module-type-InnerModuleTypeA'}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-module-type-RecollectionModule-InnerModuleA-module-type-InnerModuleTypeA'--type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = \hyperref[Ocamlary-module-type-RecollectionModule-InnerModuleA-InnerModuleA'--type-t]{\ocamlinlinecode{InnerModuleA.\allowbreak{}InnerModuleA'.\allowbreak{}t}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{t}.\end{ocamlindent}%
274277\medbreak
275278\end{ocamlindent}%
276279\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}This comment is for \ocamlinlinecode{InnerModuleTypeA'}.\end{ocamlindent}%
···283286\end{ocamlindent}%
284287\ocamlcodefragment{\ocamltag{keyword}{end}}\\
285288\label{Ocamlary--module-type-A}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[Ocamlary-module-type-A]{\ocamlinlinecode{A}}}\label{Ocamlary-module-type-A}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-module-type-A--type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\
286286-\label{Ocamlary-module-type-A--module-Q}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-module-type-A-Q]{\ocamlinlinecode{Q}}}\ocamlcodefragment{ : \hyperref[Ocamlary-module-type-COLLECTION]{\ocamlinlinecode{COLLECTION}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{CollectionModule}.\end{ocamlindent}%
289289+\label{Ocamlary-module-type-A--module-Q}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-module-type-A-Q]{\ocamlinlinecode{Q}}}\ocamlcodefragment{ : \hyperref[Ocamlary-module-type-COLLECTION]{\ocamlinlinecode{Ocamlary.\allowbreak{}COLLECTION}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{CollectionModule}.\end{ocamlindent}%
287290\medbreak
288291\end{ocamlindent}%
289292\ocamlcodefragment{\ocamltag{keyword}{end}}\\
290293\label{Ocamlary--module-type-B}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[Ocamlary-module-type-B]{\ocamlinlinecode{B}}}\label{Ocamlary-module-type-B}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-module-type-B--type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\
291291-\label{Ocamlary-module-type-B--module-Q}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-module-type-B-Q]{\ocamlinlinecode{Q}}}\ocamlcodefragment{ : \hyperref[Ocamlary-module-type-COLLECTION]{\ocamlinlinecode{COLLECTION}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{CollectionModule}.\end{ocamlindent}%
294294+\label{Ocamlary-module-type-B--module-Q}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-module-type-B-Q]{\ocamlinlinecode{Q}}}\ocamlcodefragment{ : \hyperref[Ocamlary-module-type-COLLECTION]{\ocamlinlinecode{Ocamlary.\allowbreak{}COLLECTION}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{CollectionModule}.\end{ocamlindent}%
292295\medbreak
293296\end{ocamlindent}%
294297\ocamlcodefragment{\ocamltag{keyword}{end}}\\
295295-\label{Ocamlary--module-type-C}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[Ocamlary-module-type-C]{\ocamlinlinecode{C}}}\label{Ocamlary-module-type-C}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\ocamltag{keyword}{include} \hyperref[Ocamlary-module-type-A]{\ocamlinlinecode{A}}\label{Ocamlary-module-type-C--type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\
296296-\label{Ocamlary-module-type-C--module-Q}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-module-type-C-Q]{\ocamlinlinecode{Q}}}\ocamlcodefragment{ : \hyperref[Ocamlary-module-type-COLLECTION]{\ocamlinlinecode{COLLECTION}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{CollectionModule}.\end{ocamlindent}%
298298+\label{Ocamlary--module-type-C}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[Ocamlary-module-type-C]{\ocamlinlinecode{C}}}\label{Ocamlary-module-type-C}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\ocamltag{keyword}{include} \hyperref[Ocamlary-module-type-A]{\ocamlinlinecode{Ocamlary.\allowbreak{}A}}\label{Ocamlary-module-type-C--type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\
299299+\label{Ocamlary-module-type-C--module-Q}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-module-type-C-Q]{\ocamlinlinecode{Q}}}\ocamlcodefragment{ : \hyperref[Ocamlary-module-type-COLLECTION]{\ocamlinlinecode{Ocamlary.\allowbreak{}COLLECTION}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{CollectionModule}.\end{ocamlindent}%
297300\medbreak
298298-\ocamltag{keyword}{include} \hyperref[Ocamlary-module-type-B]{\ocamlinlinecode{B}} \ocamltag{keyword}{with} \ocamltag{keyword}{type} \hyperref[Ocamlary-module-type-B--type-t]{\ocamlinlinecode{t}} := \hyperref[Ocamlary-module-type-C--type-t]{\ocamlinlinecode{t}} \ocamltag{keyword}{and} \ocamltag{keyword}{module} \hyperref[Ocamlary-module-type-B-Q]{\ocamlinlinecode{Q}} := \hyperref[Ocamlary-module-type-C-Q]{\ocamlinlinecode{Q}}\end{ocamlindent}%
301301+\ocamltag{keyword}{include} \hyperref[Ocamlary-module-type-B]{\ocamlinlinecode{Ocamlary.\allowbreak{}B}} \ocamltag{keyword}{with} \ocamltag{keyword}{type} \hyperref[Ocamlary-module-type-B--type-t]{\ocamlinlinecode{t}} := \hyperref[Ocamlary-module-type-C--type-t]{\ocamlinlinecode{t}} \ocamltag{keyword}{and} \ocamltag{keyword}{module} \hyperref[Ocamlary-module-type-B-Q]{\ocamlinlinecode{Q}} := \hyperref[Ocamlary-module-type-C-Q]{\ocamlinlinecode{Q}}\end{ocamlindent}%
299302\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}This module type includes two signatures.\end{ocamlindent}%
300303\medbreak
301304\label{Ocamlary--module-FunctorTypeOf}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-FunctorTypeOf]{\ocamlinlinecode{FunctorTypeOf}}}\ocamlcodefragment{
302302- (\hyperref[Ocamlary-FunctorTypeOf-argument-1-Collection]{\ocamlinlinecode{Collection}} : \ocamltag{keyword}{module} \ocamltag{keyword}{type} \ocamltag{keyword}{of} \hyperref[Ocamlary-CollectionModule]{\ocamlinlinecode{CollectionModule}}) :
305305+ (\hyperref[Ocamlary-FunctorTypeOf-argument-1-Collection]{\ocamlinlinecode{Collection}} : \ocamltag{keyword}{module} \ocamltag{keyword}{type} \ocamltag{keyword}{of} \hyperref[Ocamlary-CollectionModule]{\ocamlinlinecode{Ocamlary.\allowbreak{}CollectionModule}}) :
303306 \ocamltag{keyword}{sig} .\allowbreak{}.\allowbreak{}.\allowbreak{} \ocamltag{keyword}{end}}\begin{ocamlindent}This comment is for \ocamlinlinecode{FunctorTypeOf}.\end{ocamlindent}%
304307\medbreak
305305-\label{Ocamlary--module-type-IncludeModuleType}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[Ocamlary-module-type-IncludeModuleType]{\ocamlinlinecode{IncludeModuleType}}}\label{Ocamlary-module-type-IncludeModuleType}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}This comment is for \ocamlinlinecode{include EmptySigAlias}.\ocamltag{keyword}{include} \hyperref[Ocamlary-module-type-EmptySig]{\ocamlinlinecode{EmptySigAlias}}\end{ocamlindent}%
308308+\label{Ocamlary--module-type-IncludeModuleType}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[Ocamlary-module-type-IncludeModuleType]{\ocamlinlinecode{IncludeModuleType}}}\label{Ocamlary-module-type-IncludeModuleType}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}This comment is for \ocamlinlinecode{include EmptySigAlias}.\ocamltag{keyword}{include} \hyperref[Ocamlary-module-type-EmptySig]{\ocamlinlinecode{Ocamlary.\allowbreak{}EmptySigAlias}}\end{ocamlindent}%
306309\ocamlcodefragment{\ocamltag{keyword}{end}}\begin{ocamlindent}This comment is for \ocamlinlinecode{IncludeModuleType}.\end{ocamlindent}%
307310\medbreak
308311\label{Ocamlary--module-type-ToInclude}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[Ocamlary-module-type-ToInclude]{\ocamlinlinecode{ToInclude}}}\label{Ocamlary-module-type-ToInclude}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-module-type-ToInclude--module-IncludedA}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-module-type-ToInclude-IncludedA]{\ocamlinlinecode{IncludedA}}}\label{Ocamlary-module-type-ToInclude-IncludedA}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-module-type-ToInclude-IncludedA--type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\
···313316\ocamlcodefragment{\ocamltag{keyword}{end}}\\
314317\end{ocamlindent}%
315318\ocamlcodefragment{\ocamltag{keyword}{end}}\\
316316-\ocamltag{keyword}{include} \hyperref[Ocamlary-module-type-ToInclude]{\ocamlinlinecode{ToInclude}}\label{Ocamlary--module-IncludedA}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-IncludedA]{\ocamlinlinecode{IncludedA}}}\label{Ocamlary-IncludedA}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-IncludedA--type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\
319319+\ocamltag{keyword}{include} \hyperref[Ocamlary-module-type-ToInclude]{\ocamlinlinecode{Ocamlary.\allowbreak{}ToInclude}}\label{Ocamlary--module-IncludedA}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-IncludedA]{\ocamlinlinecode{IncludedA}}}\label{Ocamlary-IncludedA}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-IncludedA--type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\
317320\end{ocamlindent}%
318321\ocamlcodefragment{\ocamltag{keyword}{end}}\\
319322\label{Ocamlary--module-type-IncludedB}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[Ocamlary-module-type-IncludedB]{\ocamlinlinecode{IncludedB}}}\label{Ocamlary-module-type-IncludedB}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-module-type-IncludedB--type-s}\ocamlcodefragment{\ocamltag{keyword}{type} s}\\
···356359\ocamlcodefragment{ ]}\begin{ocamlindent}This comment is for \ocamlinlinecode{poly\_\allowbreak{}variant}.Wow! It was a polymorphic variant!\end{ocamlindent}%
357360\medbreak
358361\label{Ocamlary--type-full_gadt}\ocamlcodefragment{\ocamltag{keyword}{type} (\_\allowbreak{},\allowbreak{} \_\allowbreak{}) full\_\allowbreak{}gadt = }\\
359359-\begin{ocamltabular}{p{1.000\textwidth}}\ocamlcodefragment{| \ocamltag{constructor}{Tag} : (unit,\allowbreak{} unit) \hyperref[Ocamlary--type-full_gadt]{\ocamlinlinecode{full\_\allowbreak{}gadt}}}\label{Ocamlary--type-full_gadt.Tag}\\
360360-\ocamlcodefragment{| \ocamltag{constructor}{First} : \ocamltag{type-var}{'a} \ocamltag{arrow}{$\rightarrow$} (\ocamltag{type-var}{'a},\allowbreak{} unit) \hyperref[Ocamlary--type-full_gadt]{\ocamlinlinecode{full\_\allowbreak{}gadt}}}\label{Ocamlary--type-full_gadt.First}\\
361361-\ocamlcodefragment{| \ocamltag{constructor}{Second} : \ocamltag{type-var}{'a} \ocamltag{arrow}{$\rightarrow$} (unit,\allowbreak{} \ocamltag{type-var}{'a}) \hyperref[Ocamlary--type-full_gadt]{\ocamlinlinecode{full\_\allowbreak{}gadt}}}\label{Ocamlary--type-full_gadt.Second}\\
362362-\ocamlcodefragment{| \ocamltag{constructor}{Exist} : \ocamltag{type-var}{'a} * \ocamltag{type-var}{'b} \ocamltag{arrow}{$\rightarrow$} (\ocamltag{type-var}{'b},\allowbreak{} unit) \hyperref[Ocamlary--type-full_gadt]{\ocamlinlinecode{full\_\allowbreak{}gadt}}}\label{Ocamlary--type-full_gadt.Exist}\\
362362+\begin{ocamltabular}{p{1.000\textwidth}}\ocamlcodefragment{| \ocamltag{constructor}{Tag} : (unit,\allowbreak{} unit) \hyperref[Ocamlary--type-full_gadt]{\ocamlinlinecode{Ocamlary.\allowbreak{}full\_\allowbreak{}gadt}}}\label{Ocamlary--type-full_gadt.Tag}\\
363363+\ocamlcodefragment{| \ocamltag{constructor}{First} : \ocamltag{type-var}{'a} \ocamltag{arrow}{$\rightarrow$} (\ocamltag{type-var}{'a},\allowbreak{} unit) \hyperref[Ocamlary--type-full_gadt]{\ocamlinlinecode{Ocamlary.\allowbreak{}full\_\allowbreak{}gadt}}}\label{Ocamlary--type-full_gadt.First}\\
364364+\ocamlcodefragment{| \ocamltag{constructor}{Second} : \ocamltag{type-var}{'a} \ocamltag{arrow}{$\rightarrow$} (unit,\allowbreak{} \ocamltag{type-var}{'a}) \hyperref[Ocamlary--type-full_gadt]{\ocamlinlinecode{Ocamlary.\allowbreak{}full\_\allowbreak{}gadt}}}\label{Ocamlary--type-full_gadt.Second}\\
365365+\ocamlcodefragment{| \ocamltag{constructor}{Exist} : \ocamltag{type-var}{'a} * \ocamltag{type-var}{'b} \ocamltag{arrow}{$\rightarrow$} (\ocamltag{type-var}{'b},\allowbreak{} unit) \hyperref[Ocamlary--type-full_gadt]{\ocamlinlinecode{Ocamlary.\allowbreak{}full\_\allowbreak{}gadt}}}\label{Ocamlary--type-full_gadt.Exist}\\
363366\end{ocamltabular}%
364367\\
365368\begin{ocamlindent}This comment is for \ocamlinlinecode{full\_\allowbreak{}gadt}.Wow! It was a GADT!\end{ocamlindent}%
366369\medbreak
367370\label{Ocamlary--type-partial_gadt}\ocamlcodefragment{\ocamltag{keyword}{type} 'a partial\_\allowbreak{}gadt = }\\
368368-\begin{ocamltabular}{p{1.000\textwidth}}\ocamlcodefragment{| \ocamltag{constructor}{AscribeTag} : \ocamltag{type-var}{'a} \hyperref[Ocamlary--type-partial_gadt]{\ocamlinlinecode{partial\_\allowbreak{}gadt}}}\label{Ocamlary--type-partial_gadt.AscribeTag}\\
369369-\ocamlcodefragment{| \ocamltag{constructor}{OfTag} \ocamltag{keyword}{of} \ocamltag{type-var}{'a} \hyperref[Ocamlary--type-partial_gadt]{\ocamlinlinecode{partial\_\allowbreak{}gadt}}}\label{Ocamlary--type-partial_gadt.OfTag}\\
370370-\ocamlcodefragment{| \ocamltag{constructor}{ExistGadtTag} : (\ocamltag{type-var}{'a} \ocamltag{arrow}{$\rightarrow$} \ocamltag{type-var}{'b}) \ocamltag{arrow}{$\rightarrow$} \ocamltag{type-var}{'a} \hyperref[Ocamlary--type-partial_gadt]{\ocamlinlinecode{partial\_\allowbreak{}gadt}}}\label{Ocamlary--type-partial_gadt.ExistGadtTag}\\
371371+\begin{ocamltabular}{p{1.000\textwidth}}\ocamlcodefragment{| \ocamltag{constructor}{AscribeTag} : \ocamltag{type-var}{'a} \hyperref[Ocamlary--type-partial_gadt]{\ocamlinlinecode{Ocamlary.\allowbreak{}partial\_\allowbreak{}gadt}}}\label{Ocamlary--type-partial_gadt.AscribeTag}\\
372372+\ocamlcodefragment{| \ocamltag{constructor}{OfTag} \ocamltag{keyword}{of} \ocamltag{type-var}{'a} \hyperref[Ocamlary--type-partial_gadt]{\ocamlinlinecode{Ocamlary.\allowbreak{}partial\_\allowbreak{}gadt}}}\label{Ocamlary--type-partial_gadt.OfTag}\\
373373+\ocamlcodefragment{| \ocamltag{constructor}{ExistGadtTag} : (\ocamltag{type-var}{'a} \ocamltag{arrow}{$\rightarrow$} \ocamltag{type-var}{'b}) \ocamltag{arrow}{$\rightarrow$} \ocamltag{type-var}{'a} \hyperref[Ocamlary--type-partial_gadt]{\ocamlinlinecode{Ocamlary.\allowbreak{}partial\_\allowbreak{}gadt}}}\label{Ocamlary--type-partial_gadt.ExistGadtTag}\\
371374\end{ocamltabular}%
372375\\
373376\begin{ocamlindent}This comment is for \ocamlinlinecode{partial\_\allowbreak{}gadt}.Wow! It was a mixed GADT!\end{ocamlindent}%
374377\medbreak
375375-\label{Ocamlary--type-alias}\ocamlcodefragment{\ocamltag{keyword}{type} alias = \hyperref[Ocamlary--type-variant]{\ocamlinlinecode{variant}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{alias}.\end{ocamlindent}%
378378+\label{Ocamlary--type-alias}\ocamlcodefragment{\ocamltag{keyword}{type} alias = \hyperref[Ocamlary--type-variant]{\ocamlinlinecode{Ocamlary.\allowbreak{}variant}}}\begin{ocamlindent}This comment is for \ocamlinlinecode{alias}.\end{ocamlindent}%
376379\medbreak
377377-\label{Ocamlary--type-tuple}\ocamlcodefragment{\ocamltag{keyword}{type} tuple = (\hyperref[Ocamlary--type-alias]{\ocamlinlinecode{alias}} * \hyperref[Ocamlary--type-alias]{\ocamlinlinecode{alias}}) * \hyperref[Ocamlary--type-alias]{\ocamlinlinecode{alias}} * (\hyperref[Ocamlary--type-alias]{\ocamlinlinecode{alias}} * \hyperref[Ocamlary--type-alias]{\ocamlinlinecode{alias}})}\begin{ocamlindent}This comment is for \ocamlinlinecode{tuple}.\end{ocamlindent}%
380380+\label{Ocamlary--type-tuple}\ocamlcodefragment{\ocamltag{keyword}{type} tuple =
381381+ (\hyperref[Ocamlary--type-alias]{\ocamlinlinecode{Ocamlary.\allowbreak{}alias}} * \hyperref[Ocamlary--type-alias]{\ocamlinlinecode{Ocamlary.\allowbreak{}alias}})
382382+ * \hyperref[Ocamlary--type-alias]{\ocamlinlinecode{Ocamlary.\allowbreak{}alias}}
383383+ * (\hyperref[Ocamlary--type-alias]{\ocamlinlinecode{Ocamlary.\allowbreak{}alias}} * \hyperref[Ocamlary--type-alias]{\ocamlinlinecode{Ocamlary.\allowbreak{}alias}})}\begin{ocamlindent}This comment is for \ocamlinlinecode{tuple}.\end{ocamlindent}%
378384\medbreak
379379-\label{Ocamlary--type-variant_alias}\ocamlcodefragment{\ocamltag{keyword}{type} variant\_\allowbreak{}alias = \hyperref[Ocamlary--type-variant]{\ocamlinlinecode{variant}} = }\\
385385+\label{Ocamlary--type-variant_alias}\ocamlcodefragment{\ocamltag{keyword}{type} variant\_\allowbreak{}alias = \hyperref[Ocamlary--type-variant]{\ocamlinlinecode{Ocamlary.\allowbreak{}variant}} = }\\
380386\begin{ocamltabular}{p{1.000\textwidth}}\ocamlcodefragment{| \ocamltag{constructor}{TagA}}\label{Ocamlary--type-variant_alias.TagA}\\
381387\ocamlcodefragment{| \ocamltag{constructor}{ConstrB} \ocamltag{keyword}{of} int}\label{Ocamlary--type-variant_alias.ConstrB}\\
382388\ocamlcodefragment{| \ocamltag{constructor}{ConstrC} \ocamltag{keyword}{of} int * int}\label{Ocamlary--type-variant_alias.ConstrC}\\
···385391\\
386392\begin{ocamlindent}This comment is for \ocamlinlinecode{variant\_\allowbreak{}alias}.\end{ocamlindent}%
387393\medbreak
388388-\label{Ocamlary--type-record_alias}\ocamlcodefragment{\ocamltag{keyword}{type} record\_\allowbreak{}alias = \hyperref[Ocamlary--type-record]{\ocamlinlinecode{record}} = \{}\\
394394+\label{Ocamlary--type-record_alias}\ocamlcodefragment{\ocamltag{keyword}{type} record\_\allowbreak{}alias = \hyperref[Ocamlary--type-record]{\ocamlinlinecode{Ocamlary.\allowbreak{}record}} = \{}\\
389395\begin{ocamltabular}{p{1.000\textwidth}}\ocamlinlinecode{field1 : int;\allowbreak{}}\label{Ocamlary--type-record_alias.field1}\\
390396\ocamlinlinecode{field2 : int;\allowbreak{}}\label{Ocamlary--type-record_alias.field2}\\
391397\end{ocamltabular}%
···393399\ocamlcodefragment{\}}\begin{ocamlindent}This comment is for \ocamlinlinecode{record\_\allowbreak{}alias}.\end{ocamlindent}%
394400\medbreak
395401\label{Ocamlary--type-poly_variant_union}\ocamlcodefragment{\ocamltag{keyword}{type} poly\_\allowbreak{}variant\_\allowbreak{}union = [ }\\
396396-\begin{ocamltabular}{p{1.000\textwidth}}\ocamlcodefragment{| \hyperref[Ocamlary--type-poly_variant]{\ocamlinlinecode{poly\_\allowbreak{}variant}}}\label{Ocamlary--type-poly_variant_union.poly_variant}\\
402402+\begin{ocamltabular}{p{1.000\textwidth}}\ocamlcodefragment{| \hyperref[Ocamlary--type-poly_variant]{\ocamlinlinecode{Ocamlary.\allowbreak{}poly\_\allowbreak{}variant}}}\label{Ocamlary--type-poly_variant_union.Ocamlary.poly_variant}\\
397403\ocamlcodefragment{| `TagC}\label{Ocamlary--type-poly_variant_union.TagC}\\
398404\end{ocamltabular}%
399405\\
···412418\ocamlcodefragment{ ]}\\
413419\label{Ocamlary--type-open_poly_variant}\ocamlcodefragment{\ocamltag{keyword}{type} 'a open\_\allowbreak{}poly\_\allowbreak{}variant = [> `TagA ] \ocamltag{keyword}{as} 'a}\\
414420\label{Ocamlary--type-open_poly_variant2}\ocamlcodefragment{\ocamltag{keyword}{type} 'a open\_\allowbreak{}poly\_\allowbreak{}variant2 = [> `ConstrB of int ] \ocamltag{keyword}{as} 'a}\\
415415-\label{Ocamlary--type-open_poly_variant_alias}\ocamlcodefragment{\ocamltag{keyword}{type} 'a open\_\allowbreak{}poly\_\allowbreak{}variant\_\allowbreak{}alias = \ocamltag{type-var}{'a} \hyperref[Ocamlary--type-open_poly_variant]{\ocamlinlinecode{open\_\allowbreak{}poly\_\allowbreak{}variant}} \hyperref[Ocamlary--type-open_poly_variant2]{\ocamlinlinecode{open\_\allowbreak{}poly\_\allowbreak{}variant2}}}\\
421421+\label{Ocamlary--type-open_poly_variant_alias}\ocamlcodefragment{\ocamltag{keyword}{type} 'a open\_\allowbreak{}poly\_\allowbreak{}variant\_\allowbreak{}alias =
422422+ \ocamltag{type-var}{'a} \hyperref[Ocamlary--type-open_poly_variant]{\ocamlinlinecode{Ocamlary.\allowbreak{}open\_\allowbreak{}poly\_\allowbreak{}variant}} \hyperref[Ocamlary--type-open_poly_variant2]{\ocamlinlinecode{Ocamlary.\allowbreak{}open\_\allowbreak{}poly\_\allowbreak{}variant2}}}\\
416423\label{Ocamlary--type-poly_fun}\ocamlcodefragment{\ocamltag{keyword}{type} 'a poly\_\allowbreak{}fun = ([> `ConstrB of int ] \ocamltag{keyword}{as} 'a) \ocamltag{arrow}{$\rightarrow$} \ocamltag{type-var}{'a}}\\
417424\label{Ocamlary--type-poly_fun_constraint}\ocamlcodefragment{\ocamltag{keyword}{type} 'a poly\_\allowbreak{}fun\_\allowbreak{}constraint = \ocamltag{type-var}{'a} \ocamltag{arrow}{$\rightarrow$} \ocamltag{type-var}{'a} \ocamltag{keyword}{constraint} \ocamltag{type-var}{'a} = [> `TagA ]}\\
418425\label{Ocamlary--type-closed_poly_variant}\ocamlcodefragment{\ocamltag{keyword}{type} 'a closed\_\allowbreak{}poly\_\allowbreak{}variant = [< `One | `Two ] \ocamltag{keyword}{as} 'a}\\
···425432\end{ocamltabular}%
426433\\
427434\ocamlcodefragment{ ]}\\
428428-\label{Ocamlary--type-full_gadt_alias}\ocamlcodefragment{\ocamltag{keyword}{type} ('a,\allowbreak{} 'b) full\_\allowbreak{}gadt\_\allowbreak{}alias = (\ocamltag{type-var}{'a},\allowbreak{} \ocamltag{type-var}{'b}) \hyperref[Ocamlary--type-full_gadt]{\ocamlinlinecode{full\_\allowbreak{}gadt}} = }\\
429429-\begin{ocamltabular}{p{1.000\textwidth}}\ocamlcodefragment{| \ocamltag{constructor}{Tag} : (unit,\allowbreak{} unit) \hyperref[Ocamlary--type-full_gadt_alias]{\ocamlinlinecode{full\_\allowbreak{}gadt\_\allowbreak{}alias}}}\label{Ocamlary--type-full_gadt_alias.Tag}\\
430430-\ocamlcodefragment{| \ocamltag{constructor}{First} : \ocamltag{type-var}{'a} \ocamltag{arrow}{$\rightarrow$} (\ocamltag{type-var}{'a},\allowbreak{} unit) \hyperref[Ocamlary--type-full_gadt_alias]{\ocamlinlinecode{full\_\allowbreak{}gadt\_\allowbreak{}alias}}}\label{Ocamlary--type-full_gadt_alias.First}\\
431431-\ocamlcodefragment{| \ocamltag{constructor}{Second} : \ocamltag{type-var}{'a} \ocamltag{arrow}{$\rightarrow$} (unit,\allowbreak{} \ocamltag{type-var}{'a}) \hyperref[Ocamlary--type-full_gadt_alias]{\ocamlinlinecode{full\_\allowbreak{}gadt\_\allowbreak{}alias}}}\label{Ocamlary--type-full_gadt_alias.Second}\\
432432-\ocamlcodefragment{| \ocamltag{constructor}{Exist} : \ocamltag{type-var}{'a} * \ocamltag{type-var}{'b} \ocamltag{arrow}{$\rightarrow$} (\ocamltag{type-var}{'b},\allowbreak{} unit) \hyperref[Ocamlary--type-full_gadt_alias]{\ocamlinlinecode{full\_\allowbreak{}gadt\_\allowbreak{}alias}}}\label{Ocamlary--type-full_gadt_alias.Exist}\\
435435+\label{Ocamlary--type-full_gadt_alias}\ocamlcodefragment{\ocamltag{keyword}{type} ('a,\allowbreak{} 'b) full\_\allowbreak{}gadt\_\allowbreak{}alias = (\ocamltag{type-var}{'a},\allowbreak{} \ocamltag{type-var}{'b}) \hyperref[Ocamlary--type-full_gadt]{\ocamlinlinecode{Ocamlary.\allowbreak{}full\_\allowbreak{}gadt}} = }\\
436436+\begin{ocamltabular}{p{1.000\textwidth}}\ocamlcodefragment{| \ocamltag{constructor}{Tag} : (unit,\allowbreak{} unit) \hyperref[Ocamlary--type-full_gadt_alias]{\ocamlinlinecode{Ocamlary.\allowbreak{}full\_\allowbreak{}gadt\_\allowbreak{}alias}}}\label{Ocamlary--type-full_gadt_alias.Tag}\\
437437+\ocamlcodefragment{| \ocamltag{constructor}{First} : \ocamltag{type-var}{'a} \ocamltag{arrow}{$\rightarrow$} (\ocamltag{type-var}{'a},\allowbreak{} unit) \hyperref[Ocamlary--type-full_gadt_alias]{\ocamlinlinecode{Ocamlary.\allowbreak{}full\_\allowbreak{}gadt\_\allowbreak{}alias}}}\label{Ocamlary--type-full_gadt_alias.First}\\
438438+\ocamlcodefragment{| \ocamltag{constructor}{Second} : \ocamltag{type-var}{'a} \ocamltag{arrow}{$\rightarrow$} (unit,\allowbreak{} \ocamltag{type-var}{'a}) \hyperref[Ocamlary--type-full_gadt_alias]{\ocamlinlinecode{Ocamlary.\allowbreak{}full\_\allowbreak{}gadt\_\allowbreak{}alias}}}\label{Ocamlary--type-full_gadt_alias.Second}\\
439439+\ocamlcodefragment{| \ocamltag{constructor}{Exist} : \ocamltag{type-var}{'a} * \ocamltag{type-var}{'b} \ocamltag{arrow}{$\rightarrow$} (\ocamltag{type-var}{'b},\allowbreak{} unit) \hyperref[Ocamlary--type-full_gadt_alias]{\ocamlinlinecode{Ocamlary.\allowbreak{}full\_\allowbreak{}gadt\_\allowbreak{}alias}}}\label{Ocamlary--type-full_gadt_alias.Exist}\\
433440\end{ocamltabular}%
434441\\
435442\begin{ocamlindent}This comment is for \ocamlinlinecode{full\_\allowbreak{}gadt\_\allowbreak{}alias}.\end{ocamlindent}%
436443\medbreak
437437-\label{Ocamlary--type-partial_gadt_alias}\ocamlcodefragment{\ocamltag{keyword}{type} 'a partial\_\allowbreak{}gadt\_\allowbreak{}alias = \ocamltag{type-var}{'a} \hyperref[Ocamlary--type-partial_gadt]{\ocamlinlinecode{partial\_\allowbreak{}gadt}} = }\\
438438-\begin{ocamltabular}{p{1.000\textwidth}}\ocamlcodefragment{| \ocamltag{constructor}{AscribeTag} : \ocamltag{type-var}{'a} \hyperref[Ocamlary--type-partial_gadt_alias]{\ocamlinlinecode{partial\_\allowbreak{}gadt\_\allowbreak{}alias}}}\label{Ocamlary--type-partial_gadt_alias.AscribeTag}\\
439439-\ocamlcodefragment{| \ocamltag{constructor}{OfTag} \ocamltag{keyword}{of} \ocamltag{type-var}{'a} \hyperref[Ocamlary--type-partial_gadt_alias]{\ocamlinlinecode{partial\_\allowbreak{}gadt\_\allowbreak{}alias}}}\label{Ocamlary--type-partial_gadt_alias.OfTag}\\
440440-\ocamlcodefragment{| \ocamltag{constructor}{ExistGadtTag} : (\ocamltag{type-var}{'a} \ocamltag{arrow}{$\rightarrow$} \ocamltag{type-var}{'b}) \ocamltag{arrow}{$\rightarrow$} \ocamltag{type-var}{'a} \hyperref[Ocamlary--type-partial_gadt_alias]{\ocamlinlinecode{partial\_\allowbreak{}gadt\_\allowbreak{}alias}}}\label{Ocamlary--type-partial_gadt_alias.ExistGadtTag}\\
444444+\label{Ocamlary--type-partial_gadt_alias}\ocamlcodefragment{\ocamltag{keyword}{type} 'a partial\_\allowbreak{}gadt\_\allowbreak{}alias = \ocamltag{type-var}{'a} \hyperref[Ocamlary--type-partial_gadt]{\ocamlinlinecode{Ocamlary.\allowbreak{}partial\_\allowbreak{}gadt}} = }\\
445445+\begin{ocamltabular}{p{1.000\textwidth}}\ocamlcodefragment{| \ocamltag{constructor}{AscribeTag} : \ocamltag{type-var}{'a} \hyperref[Ocamlary--type-partial_gadt_alias]{\ocamlinlinecode{Ocamlary.\allowbreak{}partial\_\allowbreak{}gadt\_\allowbreak{}alias}}}\label{Ocamlary--type-partial_gadt_alias.AscribeTag}\\
446446+\ocamlcodefragment{| \ocamltag{constructor}{OfTag} \ocamltag{keyword}{of} \ocamltag{type-var}{'a} \hyperref[Ocamlary--type-partial_gadt_alias]{\ocamlinlinecode{Ocamlary.\allowbreak{}partial\_\allowbreak{}gadt\_\allowbreak{}alias}}}\label{Ocamlary--type-partial_gadt_alias.OfTag}\\
447447+\ocamlcodefragment{| \ocamltag{constructor}{ExistGadtTag} : (\ocamltag{type-var}{'a} \ocamltag{arrow}{$\rightarrow$} \ocamltag{type-var}{'b}) \ocamltag{arrow}{$\rightarrow$} \ocamltag{type-var}{'a} \hyperref[Ocamlary--type-partial_gadt_alias]{\ocamlinlinecode{Ocamlary.\allowbreak{}partial\_\allowbreak{}gadt\_\allowbreak{}alias}}}\label{Ocamlary--type-partial_gadt_alias.ExistGadtTag}\\
441448\end{ocamltabular}%
442449\\
443450\begin{ocamlindent}This comment is for \ocamlinlinecode{partial\_\allowbreak{}gadt\_\allowbreak{}alias}.\end{ocamlindent}%
···446453\medbreak
447454\label{Ocamlary--type-mutual_constr_a}\ocamlcodefragment{\ocamltag{keyword}{type} mutual\_\allowbreak{}constr\_\allowbreak{}a = }\\
448455\begin{ocamltabular}{p{0.500\textwidth}p{0.500\textwidth}}\ocamlcodefragment{| \ocamltag{constructor}{A}}\label{Ocamlary--type-mutual_constr_a.A}& \\
449449-\ocamlcodefragment{| \ocamltag{constructor}{B\_\allowbreak{}ish} \ocamltag{keyword}{of} \hyperref[Ocamlary--type-mutual_constr_b]{\ocamlinlinecode{mutual\_\allowbreak{}constr\_\allowbreak{}b}}}\label{Ocamlary--type-mutual_constr_a.B_ish}& This comment is between \hyperref[Ocamlary--type-mutual_constr_a]{\ocamlinlinecode{\ocamlinlinecode{mutual\_\allowbreak{}constr\_\allowbreak{}a}}[p\pageref*{Ocamlary--type-mutual_constr_a}]} and \hyperref[Ocamlary--type-mutual_constr_b]{\ocamlinlinecode{\ocamlinlinecode{mutual\_\allowbreak{}constr\_\allowbreak{}b}}[p\pageref*{Ocamlary--type-mutual_constr_b}]}.\\
456456+\ocamlcodefragment{| \ocamltag{constructor}{B\_\allowbreak{}ish} \ocamltag{keyword}{of} \hyperref[Ocamlary--type-mutual_constr_b]{\ocamlinlinecode{Ocamlary.\allowbreak{}mutual\_\allowbreak{}constr\_\allowbreak{}b}}}\label{Ocamlary--type-mutual_constr_a.B_ish}& This comment is between \hyperref[Ocamlary--type-mutual_constr_a]{\ocamlinlinecode{\ocamlinlinecode{mutual\_\allowbreak{}constr\_\allowbreak{}a}}[p\pageref*{Ocamlary--type-mutual_constr_a}]} and \hyperref[Ocamlary--type-mutual_constr_b]{\ocamlinlinecode{\ocamlinlinecode{mutual\_\allowbreak{}constr\_\allowbreak{}b}}[p\pageref*{Ocamlary--type-mutual_constr_b}]}.\\
450457\end{ocamltabular}%
451458\\
452459\begin{ocamlindent}This comment is for \hyperref[Ocamlary--type-mutual_constr_a]{\ocamlinlinecode{\ocamlinlinecode{mutual\_\allowbreak{}constr\_\allowbreak{}a}}[p\pageref*{Ocamlary--type-mutual_constr_a}]} then \hyperref[Ocamlary--type-mutual_constr_b]{\ocamlinlinecode{\ocamlinlinecode{mutual\_\allowbreak{}constr\_\allowbreak{}b}}[p\pageref*{Ocamlary--type-mutual_constr_b}]}.\end{ocamlindent}%
453460\medbreak
454461\label{Ocamlary--type-mutual_constr_b}\ocamlcodefragment{\ocamltag{keyword}{and} mutual\_\allowbreak{}constr\_\allowbreak{}b = }\\
455462\begin{ocamltabular}{p{0.500\textwidth}p{0.500\textwidth}}\ocamlcodefragment{| \ocamltag{constructor}{B}}\label{Ocamlary--type-mutual_constr_b.B}& \\
456456-\ocamlcodefragment{| \ocamltag{constructor}{A\_\allowbreak{}ish} \ocamltag{keyword}{of} \hyperref[Ocamlary--type-mutual_constr_a]{\ocamlinlinecode{mutual\_\allowbreak{}constr\_\allowbreak{}a}}}\label{Ocamlary--type-mutual_constr_b.A_ish}& This comment must be here for the next to associate correctly.\\
463463+\ocamlcodefragment{| \ocamltag{constructor}{A\_\allowbreak{}ish} \ocamltag{keyword}{of} \hyperref[Ocamlary--type-mutual_constr_a]{\ocamlinlinecode{Ocamlary.\allowbreak{}mutual\_\allowbreak{}constr\_\allowbreak{}a}}}\label{Ocamlary--type-mutual_constr_b.A_ish}& This comment must be here for the next to associate correctly.\\
457464\end{ocamltabular}%
458465\\
459466\begin{ocamlindent}This comment is for \hyperref[Ocamlary--type-mutual_constr_b]{\ocamlinlinecode{\ocamlinlinecode{mutual\_\allowbreak{}constr\_\allowbreak{}b}}[p\pageref*{Ocamlary--type-mutual_constr_b}]} then \hyperref[Ocamlary--type-mutual_constr_a]{\ocamlinlinecode{\ocamlinlinecode{mutual\_\allowbreak{}constr\_\allowbreak{}a}}[p\pageref*{Ocamlary--type-mutual_constr_a}]}.\end{ocamlindent}%
460467\medbreak
461461-\label{Ocamlary--type-rec_obj}\ocamlcodefragment{\ocamltag{keyword}{type} rec\_\allowbreak{}obj = < f : int ;\allowbreak{} g : unit \ocamltag{arrow}{$\rightarrow$} unit ;\allowbreak{} h : \hyperref[Ocamlary--type-rec_obj]{\ocamlinlinecode{rec\_\allowbreak{}obj}} >}\\
468468+\label{Ocamlary--type-rec_obj}\ocamlcodefragment{\ocamltag{keyword}{type} rec\_\allowbreak{}obj = < f : int ;\allowbreak{} g : unit \ocamltag{arrow}{$\rightarrow$} unit ;\allowbreak{} h : \hyperref[Ocamlary--type-rec_obj]{\ocamlinlinecode{Ocamlary.\allowbreak{}rec\_\allowbreak{}obj}} >}\\
462469\label{Ocamlary--type-open_obj}\ocamlcodefragment{\ocamltag{keyword}{type} 'a open\_\allowbreak{}obj = < f : int ;\allowbreak{} g : unit \ocamltag{arrow}{$\rightarrow$} unit.\allowbreak{}.\allowbreak{} > \ocamltag{keyword}{as} 'a}\\
463470\label{Ocamlary--type-oof}\ocamlcodefragment{\ocamltag{keyword}{type} 'a oof = (< a : unit.\allowbreak{}.\allowbreak{} > \ocamltag{keyword}{as} 'a) \ocamltag{arrow}{$\rightarrow$} \ocamltag{type-var}{'a}}\\
464471\label{Ocamlary--type-any_obj}\ocamlcodefragment{\ocamltag{keyword}{type} 'a any\_\allowbreak{}obj = < .\allowbreak{}.\allowbreak{} > \ocamltag{keyword}{as} 'a}\\
···466473\label{Ocamlary--type-one_meth}\ocamlcodefragment{\ocamltag{keyword}{type} one\_\allowbreak{}meth = < meth : unit >}\\
467474\label{Ocamlary--type-ext}\ocamlcodefragment{\ocamltag{keyword}{type} ext = .\allowbreak{}.\allowbreak{}}\begin{ocamlindent}A mystery wrapped in an ellipsis\end{ocamlindent}%
468475\medbreak
469469-\label{Ocamlary--extension-decl-ExtA}\ocamlcodefragment{\ocamltag{keyword}{type} \hyperref[Ocamlary--type-ext]{\ocamlinlinecode{ext}} += }\\
476476+\label{Ocamlary--extension-decl-ExtA}\ocamlcodefragment{\ocamltag{keyword}{type} \hyperref[Ocamlary--type-ext]{\ocamlinlinecode{Ocamlary.\allowbreak{}ext}} += }\\
470477\begin{ocamltabular}{p{1.000\textwidth}}\ocamlcodefragment{| \ocamltag{extension}{ExtA}}\label{Ocamlary--extension-ExtA}\\
471478\end{ocamltabular}%
472479\\
473473-\label{Ocamlary--extension-decl-ExtB}\ocamlcodefragment{\ocamltag{keyword}{type} \hyperref[Ocamlary--type-ext]{\ocamlinlinecode{ext}} += }\\
480480+\label{Ocamlary--extension-decl-ExtB}\ocamlcodefragment{\ocamltag{keyword}{type} \hyperref[Ocamlary--type-ext]{\ocamlinlinecode{Ocamlary.\allowbreak{}ext}} += }\\
474481\begin{ocamltabular}{p{1.000\textwidth}}\ocamlcodefragment{| \ocamltag{extension}{ExtB}}\label{Ocamlary--extension-ExtB}\\
475482\end{ocamltabular}%
476483\\
477477-\label{Ocamlary--extension-decl-ExtC}\ocamlcodefragment{\ocamltag{keyword}{type} \hyperref[Ocamlary--type-ext]{\ocamlinlinecode{ext}} += }\\
484484+\label{Ocamlary--extension-decl-ExtC}\ocamlcodefragment{\ocamltag{keyword}{type} \hyperref[Ocamlary--type-ext]{\ocamlinlinecode{Ocamlary.\allowbreak{}ext}} += }\\
478485\begin{ocamltabular}{p{1.000\textwidth}}\ocamlcodefragment{| \ocamltag{extension}{ExtC} \ocamltag{keyword}{of} unit}\label{Ocamlary--extension-ExtC}\\
479479-\ocamlcodefragment{| \ocamltag{extension}{ExtD} \ocamltag{keyword}{of} \hyperref[Ocamlary--type-ext]{\ocamlinlinecode{ext}}}\label{Ocamlary--extension-ExtD}\\
486486+\ocamlcodefragment{| \ocamltag{extension}{ExtD} \ocamltag{keyword}{of} \hyperref[Ocamlary--type-ext]{\ocamlinlinecode{Ocamlary.\allowbreak{}ext}}}\label{Ocamlary--extension-ExtD}\\
480487\end{ocamltabular}%
481488\\
482482-\label{Ocamlary--extension-decl-ExtE}\ocamlcodefragment{\ocamltag{keyword}{type} \hyperref[Ocamlary--type-ext]{\ocamlinlinecode{ext}} += }\\
489489+\label{Ocamlary--extension-decl-ExtE}\ocamlcodefragment{\ocamltag{keyword}{type} \hyperref[Ocamlary--type-ext]{\ocamlinlinecode{Ocamlary.\allowbreak{}ext}} += }\\
483490\begin{ocamltabular}{p{1.000\textwidth}}\ocamlcodefragment{| \ocamltag{extension}{ExtE}}\label{Ocamlary--extension-ExtE}\\
484491\end{ocamltabular}%
485492\\
486486-\label{Ocamlary--extension-decl-ExtF}\ocamlcodefragment{\ocamltag{keyword}{type} \hyperref[Ocamlary--type-ext]{\ocamlinlinecode{ext}} += \ocamltag{keyword}{private} }\\
493493+\label{Ocamlary--extension-decl-ExtF}\ocamlcodefragment{\ocamltag{keyword}{type} \hyperref[Ocamlary--type-ext]{\ocamlinlinecode{Ocamlary.\allowbreak{}ext}} += \ocamltag{keyword}{private} }\\
487494\begin{ocamltabular}{p{1.000\textwidth}}\ocamlcodefragment{| \ocamltag{extension}{ExtF}}\label{Ocamlary--extension-ExtF}\\
488495\end{ocamltabular}%
489496\\
490497\label{Ocamlary--type-poly_ext}\ocamlcodefragment{\ocamltag{keyword}{type} 'a poly\_\allowbreak{}ext = .\allowbreak{}.\allowbreak{}}\begin{ocamlindent}'a poly\_ext\end{ocamlindent}%
491498\medbreak
492492-\label{Ocamlary--extension-decl-Foo}\ocamlcodefragment{\ocamltag{keyword}{type} \hyperref[Ocamlary--type-poly_ext]{\ocamlinlinecode{poly\_\allowbreak{}ext}} += }\\
499499+\label{Ocamlary--extension-decl-Foo}\ocamlcodefragment{\ocamltag{keyword}{type} \hyperref[Ocamlary--type-poly_ext]{\ocamlinlinecode{Ocamlary.\allowbreak{}poly\_\allowbreak{}ext}} += }\\
493500\begin{ocamltabular}{p{0.500\textwidth}p{0.500\textwidth}}\ocamlcodefragment{| \ocamltag{extension}{Foo} \ocamltag{keyword}{of} \ocamltag{type-var}{'b}}\label{Ocamlary--extension-Foo}& \\
494501\ocamlcodefragment{| \ocamltag{extension}{Bar} \ocamltag{keyword}{of} \ocamltag{type-var}{'b} * \ocamltag{type-var}{'b}}\label{Ocamlary--extension-Bar}& 'b poly\_ext\\
495502\end{ocamltabular}%
496503\\
497497-\label{Ocamlary--extension-decl-Quux}\ocamlcodefragment{\ocamltag{keyword}{type} \hyperref[Ocamlary--type-poly_ext]{\ocamlinlinecode{poly\_\allowbreak{}ext}} += }\\
504504+\label{Ocamlary--extension-decl-Quux}\ocamlcodefragment{\ocamltag{keyword}{type} \hyperref[Ocamlary--type-poly_ext]{\ocamlinlinecode{Ocamlary.\allowbreak{}poly\_\allowbreak{}ext}} += }\\
498505\begin{ocamltabular}{p{0.500\textwidth}p{0.500\textwidth}}\ocamlcodefragment{| \ocamltag{extension}{Quux} \ocamltag{keyword}{of} \ocamltag{type-var}{'c}}\label{Ocamlary--extension-Quux}& 'c poly\_ext\\
499506\end{ocamltabular}%
500507\\
501508\label{Ocamlary--module-ExtMod}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-ExtMod]{\ocamlinlinecode{ExtMod}}}\label{Ocamlary-ExtMod}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-ExtMod--type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = .\allowbreak{}.\allowbreak{}}\\
502502-\label{Ocamlary-ExtMod--extension-decl-Leisureforce}\ocamlcodefragment{\ocamltag{keyword}{type} \hyperref[Ocamlary-ExtMod--type-t]{\ocamlinlinecode{t}} += }\\
509509+\label{Ocamlary-ExtMod--extension-decl-Leisureforce}\ocamlcodefragment{\ocamltag{keyword}{type} \hyperref[Ocamlary-ExtMod--type-t]{\ocamlinlinecode{Ocamlary.\allowbreak{}ExtMod.\allowbreak{}t}} += }\\
503510\begin{ocamltabular}{p{1.000\textwidth}}\ocamlcodefragment{| \ocamltag{extension}{Leisureforce}}\label{Ocamlary-ExtMod--extension-Leisureforce}\\
504511\end{ocamltabular}%
505512\\
506513\end{ocamlindent}%
507514\ocamlcodefragment{\ocamltag{keyword}{end}}\\
508508-\label{Ocamlary--extension-decl-ZzzTop0}\ocamlcodefragment{\ocamltag{keyword}{type} \hyperref[Ocamlary-ExtMod--type-t]{\ocamlinlinecode{ExtMod.\allowbreak{}t}} += }\\
515515+\label{Ocamlary--extension-decl-ZzzTop0}\ocamlcodefragment{\ocamltag{keyword}{type} \hyperref[Ocamlary-ExtMod--type-t]{\ocamlinlinecode{Ocamlary.\allowbreak{}ExtMod.\allowbreak{}t}} += }\\
509516\begin{ocamltabular}{p{0.500\textwidth}p{0.500\textwidth}}\ocamlcodefragment{| \ocamltag{extension}{ZzzTop0}}\label{Ocamlary--extension-ZzzTop0}& It's got the rock\\
510517\end{ocamltabular}%
511518\\
512512-\label{Ocamlary--extension-decl-ZzzTop}\ocamlcodefragment{\ocamltag{keyword}{type} \hyperref[Ocamlary-ExtMod--type-t]{\ocamlinlinecode{ExtMod.\allowbreak{}t}} += }\\
519519+\label{Ocamlary--extension-decl-ZzzTop}\ocamlcodefragment{\ocamltag{keyword}{type} \hyperref[Ocamlary-ExtMod--type-t]{\ocamlinlinecode{Ocamlary.\allowbreak{}ExtMod.\allowbreak{}t}} += }\\
513520\begin{ocamltabular}{p{0.500\textwidth}p{0.500\textwidth}}\ocamlcodefragment{| \ocamltag{extension}{ZzzTop} \ocamltag{keyword}{of} unit}\label{Ocamlary--extension-ZzzTop}& and it packs a unit.\\
514521\end{ocamltabular}%
515522\\
516523\label{Ocamlary--val-launch_missiles}\ocamlcodefragment{\ocamltag{keyword}{val} launch\_\allowbreak{}missiles : unit \ocamltag{arrow}{$\rightarrow$} unit}\begin{ocamlindent}Rotate keys on my mark...\end{ocamlindent}%
517524\medbreak
518518-\label{Ocamlary--type-my_mod}\ocamlcodefragment{\ocamltag{keyword}{type} my\_\allowbreak{}mod = (\ocamltag{keyword}{module} \hyperref[Ocamlary-module-type-COLLECTION]{\ocamlinlinecode{COLLECTION}})}\begin{ocamlindent}A brown paper package tied up with string\end{ocamlindent}%
525525+\label{Ocamlary--type-my_mod}\ocamlcodefragment{\ocamltag{keyword}{type} my\_\allowbreak{}mod = (\ocamltag{keyword}{module} \hyperref[Ocamlary-module-type-COLLECTION]{\ocamlinlinecode{Ocamlary.\allowbreak{}COLLECTION}})}\begin{ocamlindent}A brown paper package tied up with string\end{ocamlindent}%
519526\medbreak
520527\label{Ocamlary--class-empty_class}\ocamlcodefragment{\ocamltag{keyword}{class} \hyperref[Ocamlary-class-empty_class]{\ocamlinlinecode{empty\_\allowbreak{}class}}}\ocamlcodefragment{ : \ocamltag{keyword}{object} .\allowbreak{}.\allowbreak{}.\allowbreak{} \ocamltag{keyword}{end}}\\
521528\label{Ocamlary--class-one_method_class}\ocamlcodefragment{\ocamltag{keyword}{class} \hyperref[Ocamlary-class-one_method_class]{\ocamlinlinecode{one\_\allowbreak{}method\_\allowbreak{}class}}}\ocamlcodefragment{ : \ocamltag{keyword}{object} .\allowbreak{}.\allowbreak{}.\allowbreak{} \ocamltag{keyword}{end}}\\
···526533\label{Ocamlary--module-Dep1}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-Dep1]{\ocamlinlinecode{Dep1}}}\label{Ocamlary-Dep1}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-Dep1--module-type-S}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[Ocamlary-Dep1-module-type-S]{\ocamlinlinecode{S}}}\label{Ocamlary-Dep1-module-type-S}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-Dep1-module-type-S--class-c}\ocamlcodefragment{\ocamltag{keyword}{class} \hyperref[Ocamlary-Dep1-module-type-S-class-c]{\ocamlinlinecode{c}}}\ocamlcodefragment{ : \ocamltag{keyword}{object} .\allowbreak{}.\allowbreak{}.\allowbreak{} \ocamltag{keyword}{end}}\\
527534\end{ocamlindent}%
528535\ocamlcodefragment{\ocamltag{keyword}{end}}\\
529529-\label{Ocamlary-Dep1--module-X}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-Dep1-X]{\ocamlinlinecode{X}}}\label{Ocamlary-Dep1-X}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-Dep1-X--module-Y}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-Dep1-X-Y]{\ocamlinlinecode{Y}}}\ocamlcodefragment{ : \hyperref[Ocamlary-Dep1-module-type-S]{\ocamlinlinecode{S}}}\\
536536+\label{Ocamlary-Dep1--module-X}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-Dep1-X]{\ocamlinlinecode{X}}}\label{Ocamlary-Dep1-X}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-Dep1-X--module-Y}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-Dep1-X-Y]{\ocamlinlinecode{Y}}}\ocamlcodefragment{ : \hyperref[Ocamlary-Dep1-module-type-S]{\ocamlinlinecode{Ocamlary.\allowbreak{}Dep1.\allowbreak{}S}}}\\
530537\end{ocamlindent}%
531538\ocamlcodefragment{\ocamltag{keyword}{end}}\\
532539\end{ocamlindent}%
···539546\label{Ocamlary--module-Dep4}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-Dep4]{\ocamlinlinecode{Dep4}}}\label{Ocamlary-Dep4}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-Dep4--module-type-T}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[Ocamlary-Dep4-module-type-T]{\ocamlinlinecode{T}}}\label{Ocamlary-Dep4-module-type-T}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-Dep4-module-type-T--type-b}\ocamlcodefragment{\ocamltag{keyword}{type} b}\\
540547\end{ocamlindent}%
541548\ocamlcodefragment{\ocamltag{keyword}{end}}\\
542542-\label{Ocamlary-Dep4--module-type-S}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[Ocamlary-Dep4-module-type-S]{\ocamlinlinecode{S}}}\label{Ocamlary-Dep4-module-type-S}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-Dep4-module-type-S--module-X}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-Dep4-module-type-S-X]{\ocamlinlinecode{X}}}\ocamlcodefragment{ : \hyperref[Ocamlary-Dep4-module-type-T]{\ocamlinlinecode{T}}}\\
549549+\label{Ocamlary-Dep4--module-type-S}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[Ocamlary-Dep4-module-type-S]{\ocamlinlinecode{S}}}\label{Ocamlary-Dep4-module-type-S}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-Dep4-module-type-S--module-X}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-Dep4-module-type-S-X]{\ocamlinlinecode{X}}}\ocamlcodefragment{ : \hyperref[Ocamlary-Dep4-module-type-T]{\ocamlinlinecode{Ocamlary.\allowbreak{}Dep4.\allowbreak{}T}}}\\
543550\label{Ocamlary-Dep4-module-type-S--module-Y}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-Dep4-module-type-S-Y]{\ocamlinlinecode{Y}}}\label{Ocamlary-Dep4-module-type-S-Y}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\end{ocamlindent}%
544551\ocamlcodefragment{\ocamltag{keyword}{end}}\\
545552\end{ocamlindent}%
546553\ocamlcodefragment{\ocamltag{keyword}{end}}\\
547547-\label{Ocamlary-Dep4--module-X}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-Dep4-X]{\ocamlinlinecode{X}}}\ocamlcodefragment{ : \hyperref[Ocamlary-Dep4-module-type-T]{\ocamlinlinecode{T}}}\\
554554+\label{Ocamlary-Dep4--module-X}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-Dep4-X]{\ocamlinlinecode{X}}}\ocamlcodefragment{ : \hyperref[Ocamlary-Dep4-module-type-T]{\ocamlinlinecode{Ocamlary.\allowbreak{}Dep4.\allowbreak{}T}}}\\
548555\end{ocamlindent}%
549556\ocamlcodefragment{\ocamltag{keyword}{end}}\\
550557\label{Ocamlary--module-Dep5}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-Dep5]{\ocamlinlinecode{Dep5}}}\ocamlcodefragment{ (\hyperref[Ocamlary-Dep5-argument-1-Arg]{\ocamlinlinecode{Arg}} : \ocamltag{keyword}{sig} .\allowbreak{}.\allowbreak{}.\allowbreak{} \ocamltag{keyword}{end}) : \ocamltag{keyword}{sig} .\allowbreak{}.\allowbreak{}.\allowbreak{} \ocamltag{keyword}{end}}\\
551551-\label{Ocamlary--type-dep2}\ocamlcodefragment{\ocamltag{keyword}{type} dep2 = \hyperref[Ocamlary-Dep4-module-type-T--type-b]{\ocamlinlinecode{Dep5(Dep4).\allowbreak{}Z.\allowbreak{}X.\allowbreak{}b}}}\\
558558+\label{Ocamlary--type-dep2}\ocamlcodefragment{\ocamltag{keyword}{type} dep2 = \hyperref[Ocamlary-Dep4-module-type-T--type-b]{\ocamlinlinecode{Ocamlary.\allowbreak{}Dep5(Ocamlary.\allowbreak{}Dep4).\allowbreak{}Z.\allowbreak{}X.\allowbreak{}b}}}\\
552559\label{Ocamlary--type-dep3}\ocamlcodefragment{\ocamltag{keyword}{type} dep3 = \hyperref[Ocamlary-Dep3--type-a]{\ocamlinlinecode{Dep5(Dep4).\allowbreak{}Z.\allowbreak{}Y.\allowbreak{}a}}}\\
553560\label{Ocamlary--module-Dep6}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-Dep6]{\ocamlinlinecode{Dep6}}}\label{Ocamlary-Dep6}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-Dep6--module-type-S}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[Ocamlary-Dep6-module-type-S]{\ocamlinlinecode{S}}}\label{Ocamlary-Dep6-module-type-S}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-Dep6-module-type-S--type-d}\ocamlcodefragment{\ocamltag{keyword}{type} d}\\
554561\end{ocamlindent}%
555562\ocamlcodefragment{\ocamltag{keyword}{end}}\\
556556-\label{Ocamlary-Dep6--module-type-T}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[Ocamlary-Dep6-module-type-T]{\ocamlinlinecode{T}}}\label{Ocamlary-Dep6-module-type-T}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-Dep6-module-type-T--module-type-R}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} R = \hyperref[Ocamlary-Dep6-module-type-S]{\ocamlinlinecode{S}}}\\
563563+\label{Ocamlary-Dep6--module-type-T}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[Ocamlary-Dep6-module-type-T]{\ocamlinlinecode{T}}}\label{Ocamlary-Dep6-module-type-T}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-Dep6-module-type-T--module-type-R}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} R = \hyperref[Ocamlary-Dep6-module-type-S]{\ocamlinlinecode{Ocamlary.\allowbreak{}Dep6.\allowbreak{}S}}}\\
557564\label{Ocamlary-Dep6-module-type-T--module-Y}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-Dep6-module-type-T-Y]{\ocamlinlinecode{Y}}}\ocamlcodefragment{ : \hyperref[Ocamlary-Dep6-module-type-S]{\ocamlinlinecode{R}}}\\
558565\end{ocamlindent}%
559566\ocamlcodefragment{\ocamltag{keyword}{end}}\\
560560-\label{Ocamlary-Dep6--module-X}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-Dep6-X]{\ocamlinlinecode{X}}}\ocamlcodefragment{ : \hyperref[Ocamlary-Dep6-module-type-T]{\ocamlinlinecode{T}}}\\
567567+\label{Ocamlary-Dep6--module-X}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-Dep6-X]{\ocamlinlinecode{X}}}\ocamlcodefragment{ : \hyperref[Ocamlary-Dep6-module-type-T]{\ocamlinlinecode{Ocamlary.\allowbreak{}Dep6.\allowbreak{}T}}}\\
561568\end{ocamlindent}%
562569\ocamlcodefragment{\ocamltag{keyword}{end}}\\
563570\label{Ocamlary--module-Dep7}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-Dep7]{\ocamlinlinecode{Dep7}}}\ocamlcodefragment{ (\hyperref[Ocamlary-Dep7-argument-1-Arg]{\ocamlinlinecode{Arg}} : \ocamltag{keyword}{sig} .\allowbreak{}.\allowbreak{}.\allowbreak{} \ocamltag{keyword}{end}) : \ocamltag{keyword}{sig} .\allowbreak{}.\allowbreak{}.\allowbreak{} \ocamltag{keyword}{end}}\\
564564-\label{Ocamlary--type-dep4}\ocamlcodefragment{\ocamltag{keyword}{type} dep4 = \hyperref[Ocamlary-Dep6-module-type-T-Y--type-d]{\ocamlinlinecode{Dep7(Dep6).\allowbreak{}M.\allowbreak{}Y.\allowbreak{}d}}}\\
571571+\label{Ocamlary--type-dep4}\ocamlcodefragment{\ocamltag{keyword}{type} dep4 = \hyperref[Ocamlary-Dep6-module-type-T-Y--type-d]{\ocamlinlinecode{Ocamlary.\allowbreak{}Dep7(Ocamlary.\allowbreak{}Dep6).\allowbreak{}M.\allowbreak{}Y.\allowbreak{}d}}}\\
565572\label{Ocamlary--module-Dep8}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-Dep8]{\ocamlinlinecode{Dep8}}}\label{Ocamlary-Dep8}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-Dep8--module-type-T}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[Ocamlary-Dep8-module-type-T]{\ocamlinlinecode{T}}}\label{Ocamlary-Dep8-module-type-T}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-Dep8-module-type-T--type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\
566573\end{ocamlindent}%
567574\ocamlcodefragment{\ocamltag{keyword}{end}}\\
···577584\end{ocamlindent}%
578585\ocamlcodefragment{\ocamltag{keyword}{end}}\\
579586\label{Ocamlary--module-Dep12}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-Dep12]{\ocamlinlinecode{Dep12}}}\ocamlcodefragment{ (\hyperref[Ocamlary-Dep12-argument-1-Arg]{\ocamlinlinecode{Arg}} : \ocamltag{keyword}{sig} .\allowbreak{}.\allowbreak{}.\allowbreak{} \ocamltag{keyword}{end}) : \ocamltag{keyword}{sig} .\allowbreak{}.\allowbreak{}.\allowbreak{} \ocamltag{keyword}{end}}\\
580580-\label{Ocamlary--module-Dep13}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-Dep13]{\ocamlinlinecode{Dep13}}}\ocamlcodefragment{ : \hyperref[Ocamlary-Dep11-module-type-S]{\ocamlinlinecode{Dep12(Dep11).\allowbreak{}T}}}\\
581581-\label{Ocamlary--type-dep5}\ocamlcodefragment{\ocamltag{keyword}{type} dep5 = \hyperref[Ocamlary-Dep11-module-type-S-class-c]{\ocamlinlinecode{Dep13.\allowbreak{}c}}}\\
587587+\label{Ocamlary--module-Dep13}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-Dep13]{\ocamlinlinecode{Dep13}}}\ocamlcodefragment{ : \hyperref[Ocamlary-Dep11-module-type-S]{\ocamlinlinecode{Ocamlary.\allowbreak{}Dep12(Ocamlary.\allowbreak{}Dep11).\allowbreak{}T}}}\\
588588+\label{Ocamlary--type-dep5}\ocamlcodefragment{\ocamltag{keyword}{type} dep5 = \hyperref[Ocamlary-Dep11-module-type-S-class-c]{\ocamlinlinecode{Ocamlary.\allowbreak{}Dep13.\allowbreak{}c}}}\\
582589\label{Ocamlary--module-type-With1}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[Ocamlary-module-type-With1]{\ocamlinlinecode{With1}}}\label{Ocamlary-module-type-With1}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-module-type-With1--module-M}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-module-type-With1-M]{\ocamlinlinecode{M}}}\label{Ocamlary-module-type-With1-M}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-module-type-With1-M--module-type-S}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} S}\\
583590\end{ocamlindent}%
584591\ocamlcodefragment{\ocamltag{keyword}{end}}\\
···590597\ocamlcodefragment{\ocamltag{keyword}{end}}\\
591598\end{ocamlindent}%
592599\ocamlcodefragment{\ocamltag{keyword}{end}}\\
593593-\label{Ocamlary--module-With3}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-With3]{\ocamlinlinecode{With3}}}\ocamlcodefragment{ : \hyperref[Ocamlary-module-type-With1]{\ocamlinlinecode{With1}} \ocamltag{keyword}{with} \ocamltag{keyword}{module} \hyperref[Ocamlary-module-type-With1-M]{\ocamlinlinecode{M}} = \hyperref[Ocamlary-With2]{\ocamlinlinecode{With2}}}\\
594594-\label{Ocamlary--type-with1}\ocamlcodefragment{\ocamltag{keyword}{type} with1 = \hyperref[Ocamlary-With3-N--type-t]{\ocamlinlinecode{With3.\allowbreak{}N.\allowbreak{}t}}}\\
595595-\label{Ocamlary--module-With4}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-With4]{\ocamlinlinecode{With4}}}\ocamlcodefragment{ : \hyperref[Ocamlary-module-type-With1]{\ocamlinlinecode{With1}} \ocamltag{keyword}{with} \ocamltag{keyword}{module} \hyperref[Ocamlary-module-type-With1-M]{\ocamlinlinecode{M}} := \hyperref[Ocamlary-With2]{\ocamlinlinecode{With2}}}\\
596596-\label{Ocamlary--type-with2}\ocamlcodefragment{\ocamltag{keyword}{type} with2 = \hyperref[Ocamlary-With4-N--type-t]{\ocamlinlinecode{With4.\allowbreak{}N.\allowbreak{}t}}}\\
600600+\label{Ocamlary--module-With3}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-With3]{\ocamlinlinecode{With3}}}\ocamlcodefragment{ : \hyperref[Ocamlary-module-type-With1]{\ocamlinlinecode{Ocamlary.\allowbreak{}With1}} \ocamltag{keyword}{with} \ocamltag{keyword}{module} \hyperref[Ocamlary-module-type-With1-M]{\ocamlinlinecode{M}} = \hyperref[Ocamlary-With2]{\ocamlinlinecode{Ocamlary.\allowbreak{}With2}}}\\
601601+\label{Ocamlary--type-with1}\ocamlcodefragment{\ocamltag{keyword}{type} with1 = \hyperref[Ocamlary-With3-N--type-t]{\ocamlinlinecode{Ocamlary.\allowbreak{}With3.\allowbreak{}N.\allowbreak{}t}}}\\
602602+\label{Ocamlary--module-With4}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-With4]{\ocamlinlinecode{With4}}}\ocamlcodefragment{ : \hyperref[Ocamlary-module-type-With1]{\ocamlinlinecode{Ocamlary.\allowbreak{}With1}} \ocamltag{keyword}{with} \ocamltag{keyword}{module} \hyperref[Ocamlary-module-type-With1-M]{\ocamlinlinecode{M}} := \hyperref[Ocamlary-With2]{\ocamlinlinecode{Ocamlary.\allowbreak{}With2}}}\\
603603+\label{Ocamlary--type-with2}\ocamlcodefragment{\ocamltag{keyword}{type} with2 = \hyperref[Ocamlary-With4-N--type-t]{\ocamlinlinecode{Ocamlary.\allowbreak{}With4.\allowbreak{}N.\allowbreak{}t}}}\\
597604\label{Ocamlary--module-With5}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-With5]{\ocamlinlinecode{With5}}}\label{Ocamlary-With5}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-With5--module-type-S}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[Ocamlary-With5-module-type-S]{\ocamlinlinecode{S}}}\label{Ocamlary-With5-module-type-S}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-With5-module-type-S--type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\
598605\end{ocamlindent}%
599606\ocamlcodefragment{\ocamltag{keyword}{end}}\\
600600-\label{Ocamlary-With5--module-N}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-With5-N]{\ocamlinlinecode{N}}}\ocamlcodefragment{ : \hyperref[Ocamlary-With5-module-type-S]{\ocamlinlinecode{S}}}\\
607607+\label{Ocamlary-With5--module-N}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-With5-N]{\ocamlinlinecode{N}}}\ocamlcodefragment{ : \hyperref[Ocamlary-With5-module-type-S]{\ocamlinlinecode{Ocamlary.\allowbreak{}With5.\allowbreak{}S}}}\\
601608\end{ocamlindent}%
602609\ocamlcodefragment{\ocamltag{keyword}{end}}\\
603610\label{Ocamlary--module-With6}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-With6]{\ocamlinlinecode{With6}}}\label{Ocamlary-With6}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-With6--module-type-T}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[Ocamlary-With6-module-type-T]{\ocamlinlinecode{T}}}\label{Ocamlary-With6-module-type-T}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-With6-module-type-T--module-M}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-With6-module-type-T-M]{\ocamlinlinecode{M}}}\label{Ocamlary-With6-module-type-T-M}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-With6-module-type-T-M--module-type-S}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} S}\\
604604-\label{Ocamlary-With6-module-type-T-M--module-N}\ocamlcodefragment{\ocamltag{keyword}{module} N : \hyperref[Ocamlary-With6-module-type-T-M--module-type-S]{\ocamlinlinecode{S}}}\\
611611+\label{Ocamlary-With6-module-type-T-M--module-N}\ocamlcodefragment{\ocamltag{keyword}{module} N : \hyperref[Ocamlary-With6-module-type-T-M--module-type-S]{\ocamlinlinecode{M.\allowbreak{}S}}}\\
605612\end{ocamlindent}%
606613\ocamlcodefragment{\ocamltag{keyword}{end}}\\
607614\end{ocamlindent}%
···609616\end{ocamlindent}%
610617\ocamlcodefragment{\ocamltag{keyword}{end}}\\
611618\label{Ocamlary--module-With7}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-With7]{\ocamlinlinecode{With7}}}\ocamlcodefragment{ (\hyperref[Ocamlary-With7-argument-1-X]{\ocamlinlinecode{X}} : \ocamltag{keyword}{sig} .\allowbreak{}.\allowbreak{}.\allowbreak{} \ocamltag{keyword}{end}) : \ocamltag{keyword}{sig} .\allowbreak{}.\allowbreak{}.\allowbreak{} \ocamltag{keyword}{end}}\\
612612-\label{Ocamlary--module-type-With8}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[Ocamlary-module-type-With8]{\ocamlinlinecode{With8}}}\label{Ocamlary-module-type-With8}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-module-type-With8--module-M}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-module-type-With8-M]{\ocamlinlinecode{M}}}\ocamlcodefragment{ : \ocamltag{keyword}{module} \ocamltag{keyword}{type} \ocamltag{keyword}{of} \ocamltag{keyword}{struct} \ocamltag{keyword}{include} \hyperref[Ocamlary-With5]{\ocamlinlinecode{With5}} \ocamltag{keyword}{end} \ocamltag{keyword}{with} \ocamltag{keyword}{type} \hyperref[Ocamlary-With5-N--type-t]{\ocamlinlinecode{N.\allowbreak{}t}} = \hyperref[Ocamlary-With5-N--type-t]{\ocamlinlinecode{With5.\allowbreak{}N.\allowbreak{}t}}}\\
619619+\label{Ocamlary--module-type-With8}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[Ocamlary-module-type-With8]{\ocamlinlinecode{With8}}}\label{Ocamlary-module-type-With8}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-module-type-With8--module-M}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-module-type-With8-M]{\ocamlinlinecode{M}}}\ocamlcodefragment{ :
620620+ \ocamltag{keyword}{module} \ocamltag{keyword}{type} \ocamltag{keyword}{of} \ocamltag{keyword}{struct} \ocamltag{keyword}{include} \hyperref[Ocamlary-With5]{\ocamlinlinecode{Ocamlary.\allowbreak{}With5}} \ocamltag{keyword}{end}
621621+ \ocamltag{keyword}{with} \ocamltag{keyword}{type} \hyperref[Ocamlary-With5-N--type-t]{\ocamlinlinecode{N.\allowbreak{}t}} = \hyperref[Ocamlary-With5-N--type-t]{\ocamlinlinecode{Ocamlary.\allowbreak{}With5.\allowbreak{}N.\allowbreak{}t}}}\\
613622\end{ocamlindent}%
614623\ocamlcodefragment{\ocamltag{keyword}{end}}\\
615624\label{Ocamlary--module-With9}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-With9]{\ocamlinlinecode{With9}}}\label{Ocamlary-With9}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-With9--module-type-S}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[Ocamlary-With9-module-type-S]{\ocamlinlinecode{S}}}\label{Ocamlary-With9-module-type-S}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-With9-module-type-S--type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\
···626635\medbreak
627636\end{ocamlindent}%
628637\ocamlcodefragment{\ocamltag{keyword}{end}}\\
629629-\label{Ocamlary--module-type-With11}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[Ocamlary-module-type-With11]{\ocamlinlinecode{With11}}}\label{Ocamlary-module-type-With11}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-module-type-With11--module-M}\ocamlcodefragment{\ocamltag{keyword}{module} M = \hyperref[Ocamlary-With9]{\ocamlinlinecode{With9}}}\\
638638+\label{Ocamlary--module-type-With11}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[Ocamlary-module-type-With11]{\ocamlinlinecode{With11}}}\label{Ocamlary-module-type-With11}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-module-type-With11--module-M}\ocamlcodefragment{\ocamltag{keyword}{module} M = \hyperref[Ocamlary-With9]{\ocamlinlinecode{Ocamlary.\allowbreak{}With9}}}\\
630639\label{Ocamlary-module-type-With11--module-N}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-module-type-With11-N]{\ocamlinlinecode{N}}}\ocamlcodefragment{ : \hyperref[Ocamlary-With9-module-type-S]{\ocamlinlinecode{M.\allowbreak{}S}} \ocamltag{keyword}{with} \ocamltag{keyword}{type} \hyperref[Ocamlary-With9-module-type-S--type-t]{\ocamlinlinecode{t}} = int}\\
631640\end{ocamlindent}%
632641\ocamlcodefragment{\ocamltag{keyword}{end}}\\
···635644\ocamlcodefragment{\ocamltag{keyword}{end}}\\
636645\end{ocamlindent}%
637646\ocamlcodefragment{\ocamltag{keyword}{end}}\\
638638-\ocamltag{keyword}{include} \hyperref[Ocamlary-module-type-NestedInclude1]{\ocamlinlinecode{NestedInclude1}}\label{Ocamlary--module-type-NestedInclude2}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[Ocamlary-module-type-NestedInclude2]{\ocamlinlinecode{NestedInclude2}}}\label{Ocamlary-module-type-NestedInclude2}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-module-type-NestedInclude2--type-nested_include}\ocamlcodefragment{\ocamltag{keyword}{type} nested\_\allowbreak{}include}\\
647647+\ocamltag{keyword}{include} \hyperref[Ocamlary-module-type-NestedInclude1]{\ocamlinlinecode{Ocamlary.\allowbreak{}NestedInclude1}}\label{Ocamlary--module-type-NestedInclude2}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[Ocamlary-module-type-NestedInclude2]{\ocamlinlinecode{NestedInclude2}}}\label{Ocamlary-module-type-NestedInclude2}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-module-type-NestedInclude2--type-nested_include}\ocamlcodefragment{\ocamltag{keyword}{type} nested\_\allowbreak{}include}\\
639648\end{ocamlindent}%
640649\ocamlcodefragment{\ocamltag{keyword}{end}}\\
641641-\ocamltag{keyword}{include} \hyperref[Ocamlary-module-type-NestedInclude2]{\ocamlinlinecode{NestedInclude2}} \ocamltag{keyword}{with} \ocamltag{keyword}{type} \hyperref[Ocamlary-module-type-NestedInclude2--type-nested_include]{\ocamlinlinecode{nested\_\allowbreak{}include}} = int\label{Ocamlary--type-nested_include}\ocamlcodefragment{\ocamltag{keyword}{type} nested\_\allowbreak{}include = int}\\
650650+\ocamltag{keyword}{include} \hyperref[Ocamlary-module-type-NestedInclude2]{\ocamlinlinecode{Ocamlary.\allowbreak{}NestedInclude2}} \ocamltag{keyword}{with} \ocamltag{keyword}{type} \hyperref[Ocamlary-module-type-NestedInclude2--type-nested_include]{\ocamlinlinecode{nested\_\allowbreak{}include}} = int\label{Ocamlary--type-nested_include}\ocamlcodefragment{\ocamltag{keyword}{type} nested\_\allowbreak{}include = int}\\
642651\label{Ocamlary--module-DoubleInclude1}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-DoubleInclude1]{\ocamlinlinecode{DoubleInclude1}}}\label{Ocamlary-DoubleInclude1}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-DoubleInclude1--module-DoubleInclude2}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-DoubleInclude1-DoubleInclude2]{\ocamlinlinecode{DoubleInclude2}}}\label{Ocamlary-DoubleInclude1-DoubleInclude2}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-DoubleInclude1-DoubleInclude2--type-double_include}\ocamlcodefragment{\ocamltag{keyword}{type} double\_\allowbreak{}include}\\
643652\end{ocamlindent}%
644653\ocamlcodefragment{\ocamltag{keyword}{end}}\\
645654\end{ocamlindent}%
646655\ocamlcodefragment{\ocamltag{keyword}{end}}\\
647647-\label{Ocamlary--module-DoubleInclude3}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-DoubleInclude3]{\ocamlinlinecode{DoubleInclude3}}}\label{Ocamlary-DoubleInclude3}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\ocamltag{keyword}{include} \ocamltag{keyword}{module} \ocamltag{keyword}{type} \ocamltag{keyword}{of} \hyperref[Ocamlary-DoubleInclude1]{\ocamlinlinecode{DoubleInclude1}}\label{Ocamlary-DoubleInclude3--module-DoubleInclude2}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-DoubleInclude3-DoubleInclude2]{\ocamlinlinecode{DoubleInclude2}}}\label{Ocamlary-DoubleInclude3-DoubleInclude2}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-DoubleInclude3-DoubleInclude2--type-double_include}\ocamlcodefragment{\ocamltag{keyword}{type} double\_\allowbreak{}include}\\
656656+\label{Ocamlary--module-DoubleInclude3}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-DoubleInclude3]{\ocamlinlinecode{DoubleInclude3}}}\label{Ocamlary-DoubleInclude3}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\ocamltag{keyword}{include} \ocamltag{keyword}{module} \ocamltag{keyword}{type} \ocamltag{keyword}{of} \hyperref[Ocamlary-DoubleInclude1]{\ocamlinlinecode{Ocamlary.\allowbreak{}DoubleInclude1}}\label{Ocamlary-DoubleInclude3--module-DoubleInclude2}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-DoubleInclude3-DoubleInclude2]{\ocamlinlinecode{DoubleInclude2}}}\label{Ocamlary-DoubleInclude3-DoubleInclude2}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-DoubleInclude3-DoubleInclude2--type-double_include}\ocamlcodefragment{\ocamltag{keyword}{type} double\_\allowbreak{}include}\\
648657\end{ocamlindent}%
649658\ocamlcodefragment{\ocamltag{keyword}{end}}\\
650659\end{ocamlindent}%
651660\ocamlcodefragment{\ocamltag{keyword}{end}}\\
652652-\ocamltag{keyword}{include} \ocamltag{keyword}{module} \ocamltag{keyword}{type} \ocamltag{keyword}{of} \hyperref[Ocamlary-DoubleInclude3-DoubleInclude2]{\ocamlinlinecode{DoubleInclude3.\allowbreak{}DoubleInclude2}}\label{Ocamlary--type-double_include}\ocamlcodefragment{\ocamltag{keyword}{type} double\_\allowbreak{}include}\\
661661+\ocamltag{keyword}{include} \ocamltag{keyword}{module} \ocamltag{keyword}{type} \ocamltag{keyword}{of} \hyperref[Ocamlary-DoubleInclude3-DoubleInclude2]{\ocamlinlinecode{Ocamlary.\allowbreak{}DoubleInclude3.\allowbreak{}DoubleInclude2}}\label{Ocamlary--type-double_include}\ocamlcodefragment{\ocamltag{keyword}{type} double\_\allowbreak{}include}\\
653662\label{Ocamlary--module-IncludeInclude1}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-IncludeInclude1]{\ocamlinlinecode{IncludeInclude1}}}\label{Ocamlary-IncludeInclude1}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-IncludeInclude1--module-type-IncludeInclude2}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[Ocamlary-IncludeInclude1-module-type-IncludeInclude2]{\ocamlinlinecode{IncludeInclude2}}}\label{Ocamlary-IncludeInclude1-module-type-IncludeInclude2}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-IncludeInclude1-module-type-IncludeInclude2--type-include_include}\ocamlcodefragment{\ocamltag{keyword}{type} include\_\allowbreak{}include}\\
654663\end{ocamlindent}%
655664\ocamlcodefragment{\ocamltag{keyword}{end}}\\
···657666\ocamlcodefragment{\ocamltag{keyword}{end}}\\
658667\end{ocamlindent}%
659668\ocamlcodefragment{\ocamltag{keyword}{end}}\\
660660-\ocamltag{keyword}{include} \ocamltag{keyword}{module} \ocamltag{keyword}{type} \ocamltag{keyword}{of} \hyperref[Ocamlary-IncludeInclude1]{\ocamlinlinecode{IncludeInclude1}}\label{Ocamlary--module-type-IncludeInclude2}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[Ocamlary-module-type-IncludeInclude2]{\ocamlinlinecode{IncludeInclude2}}}\label{Ocamlary-module-type-IncludeInclude2}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-module-type-IncludeInclude2--type-include_include}\ocamlcodefragment{\ocamltag{keyword}{type} include\_\allowbreak{}include}\\
669669+\ocamltag{keyword}{include} \ocamltag{keyword}{module} \ocamltag{keyword}{type} \ocamltag{keyword}{of} \hyperref[Ocamlary-IncludeInclude1]{\ocamlinlinecode{Ocamlary.\allowbreak{}IncludeInclude1}}\label{Ocamlary--module-type-IncludeInclude2}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[Ocamlary-module-type-IncludeInclude2]{\ocamlinlinecode{IncludeInclude2}}}\label{Ocamlary-module-type-IncludeInclude2}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-module-type-IncludeInclude2--type-include_include}\ocamlcodefragment{\ocamltag{keyword}{type} include\_\allowbreak{}include}\\
661670\end{ocamlindent}%
662671\ocamlcodefragment{\ocamltag{keyword}{end}}\\
663672\label{Ocamlary--module-IncludeInclude2_M}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-IncludeInclude2_M]{\ocamlinlinecode{IncludeInclude2\_\allowbreak{}M}}}\label{Ocamlary-IncludeInclude2_M}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\end{ocamlindent}%
664673\ocamlcodefragment{\ocamltag{keyword}{end}}\\
665665-\ocamltag{keyword}{include} \hyperref[Ocamlary-module-type-IncludeInclude2]{\ocamlinlinecode{IncludeInclude2}}\label{Ocamlary--type-include_include}\ocamlcodefragment{\ocamltag{keyword}{type} include\_\allowbreak{}include}\\
674674+\ocamltag{keyword}{include} \hyperref[Ocamlary-module-type-IncludeInclude2]{\ocamlinlinecode{Ocamlary.\allowbreak{}IncludeInclude2}}\label{Ocamlary--type-include_include}\ocamlcodefragment{\ocamltag{keyword}{type} include\_\allowbreak{}include}\\
666675\subsection{Trying the \{!modules: ...\} command.\label{Ocamlary--indexmodules}}%
667676With ocamldoc, toplevel units will be linked and documented, while submodules will behave as simple references.
668677···682691\label{Ocamlary--module-CanonicalTest}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-CanonicalTest]{\ocamlinlinecode{CanonicalTest}}}\label{Ocamlary-CanonicalTest}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-CanonicalTest--module-Base}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-CanonicalTest-Base]{\ocamlinlinecode{Base}}}\label{Ocamlary-CanonicalTest-Base}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-CanonicalTest-Base--module-List}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-CanonicalTest-Base-List]{\ocamlinlinecode{List}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig} .\allowbreak{}.\allowbreak{}.\allowbreak{} \ocamltag{keyword}{end}}\\
683692\end{ocamlindent}%
684693\ocamlcodefragment{\ocamltag{keyword}{end}}\\
685685-\label{Ocamlary-CanonicalTest--module-Base_Tests}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-CanonicalTest-Base_Tests]{\ocamlinlinecode{Base\_\allowbreak{}Tests}}}\label{Ocamlary-CanonicalTest-Base_Tests}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-CanonicalTest-Base_Tests--module-C}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-CanonicalTest-Base_Tests-C]{\ocamlinlinecode{C}}}\ocamlcodefragment{ : \ocamltag{keyword}{module} \ocamltag{keyword}{type} \ocamltag{keyword}{of} \hyperref[Ocamlary-CanonicalTest-Base-List]{\ocamlinlinecode{Base.\allowbreak{}List}}}\\
686686-\label{Ocamlary-CanonicalTest-Base_Tests--module-L}\ocamlcodefragment{\ocamltag{keyword}{module} L = \hyperref[Ocamlary-CanonicalTest-Base-List]{\ocamlinlinecode{Base.\allowbreak{}List}}}\\
694694+\label{Ocamlary-CanonicalTest--module-Base_Tests}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-CanonicalTest-Base_Tests]{\ocamlinlinecode{Base\_\allowbreak{}Tests}}}\label{Ocamlary-CanonicalTest-Base_Tests}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-CanonicalTest-Base_Tests--module-C}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-CanonicalTest-Base_Tests-C]{\ocamlinlinecode{C}}}\ocamlcodefragment{ : \ocamltag{keyword}{module} \ocamltag{keyword}{type} \ocamltag{keyword}{of} \hyperref[Ocamlary-CanonicalTest-Base-List]{\ocamlinlinecode{Ocamlary.\allowbreak{}CanonicalTest.\allowbreak{}Base.\allowbreak{}List}}}\\
695695+\label{Ocamlary-CanonicalTest-Base_Tests--module-L}\ocamlcodefragment{\ocamltag{keyword}{module} L = \hyperref[Ocamlary-CanonicalTest-Base-List]{\ocamlinlinecode{Ocamlary.\allowbreak{}CanonicalTest.\allowbreak{}Base.\allowbreak{}List}}}\\
687696\label{Ocamlary-CanonicalTest-Base_Tests--val-foo}\ocamlcodefragment{\ocamltag{keyword}{val} foo : int \hyperref[Ocamlary-CanonicalTest-Base-List--type-t]{\ocamlinlinecode{L.\allowbreak{}t}} \ocamltag{arrow}{$\rightarrow$} float \hyperref[Ocamlary-CanonicalTest-Base-List--type-t]{\ocamlinlinecode{L.\allowbreak{}t}}}\\
688688-\label{Ocamlary-CanonicalTest-Base_Tests--val-bar}\ocamlcodefragment{\ocamltag{keyword}{val} bar : \ocamltag{type-var}{'a} \hyperref[Ocamlary-CanonicalTest-Base-List--type-t]{\ocamlinlinecode{Base.\allowbreak{}List.\allowbreak{}t}} \ocamltag{arrow}{$\rightarrow$} \ocamltag{type-var}{'a} \hyperref[Ocamlary-CanonicalTest-Base-List--type-t]{\ocamlinlinecode{Base.\allowbreak{}List.\allowbreak{}t}}}\\
689689-\label{Ocamlary-CanonicalTest-Base_Tests--val-baz}\ocamlcodefragment{\ocamltag{keyword}{val} baz : \ocamltag{type-var}{'a} \hyperref[Ocamlary-CanonicalTest-Base-List--type-t]{\ocamlinlinecode{Base.\allowbreak{}List.\allowbreak{}t}} \ocamltag{arrow}{$\rightarrow$} unit}\\
697697+\label{Ocamlary-CanonicalTest-Base_Tests--val-bar}\ocamlcodefragment{\ocamltag{keyword}{val} bar :
698698+ \ocamltag{type-var}{'a} \hyperref[Ocamlary-CanonicalTest-Base-List--type-t]{\ocamlinlinecode{Ocamlary.\allowbreak{}CanonicalTest.\allowbreak{}Base.\allowbreak{}List.\allowbreak{}t}} \ocamltag{arrow}{$\rightarrow$}
699699+ \ocamltag{type-var}{'a} \hyperref[Ocamlary-CanonicalTest-Base-List--type-t]{\ocamlinlinecode{Ocamlary.\allowbreak{}CanonicalTest.\allowbreak{}Base.\allowbreak{}List.\allowbreak{}t}}}\\
700700+\label{Ocamlary-CanonicalTest-Base_Tests--val-baz}\ocamlcodefragment{\ocamltag{keyword}{val} baz : \ocamltag{type-var}{'a} \hyperref[Ocamlary-CanonicalTest-Base-List--type-t]{\ocamlinlinecode{Ocamlary.\allowbreak{}CanonicalTest.\allowbreak{}Base.\allowbreak{}List.\allowbreak{}t}} \ocamltag{arrow}{$\rightarrow$} unit}\\
690701\end{ocamlindent}%
691702\ocamlcodefragment{\ocamltag{keyword}{end}}\\
692692-\label{Ocamlary-CanonicalTest--module-List_modif}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-CanonicalTest-List_modif]{\ocamlinlinecode{List\_\allowbreak{}modif}}}\ocamlcodefragment{ : \ocamltag{keyword}{module} \ocamltag{keyword}{type} \ocamltag{keyword}{of} \hyperref[Ocamlary-CanonicalTest-Base-List]{\ocamlinlinecode{Base.\allowbreak{}List}} \ocamltag{keyword}{with} \ocamltag{keyword}{type} 'c \hyperref[Ocamlary-CanonicalTest-Base-List--type-t]{\ocamlinlinecode{t}} = \ocamltag{type-var}{'c} \hyperref[Ocamlary-CanonicalTest-Base-List--type-t]{\ocamlinlinecode{Base.\allowbreak{}List.\allowbreak{}t}}}\\
703703+\label{Ocamlary-CanonicalTest--module-List_modif}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-CanonicalTest-List_modif]{\ocamlinlinecode{List\_\allowbreak{}modif}}}\ocamlcodefragment{ :
704704+ \ocamltag{keyword}{module} \ocamltag{keyword}{type} \ocamltag{keyword}{of} \hyperref[Ocamlary-CanonicalTest-Base-List]{\ocamlinlinecode{Base.\allowbreak{}List}}
705705+ \ocamltag{keyword}{with} \ocamltag{keyword}{type} 'c \hyperref[Ocamlary-CanonicalTest-Base-List--type-t]{\ocamlinlinecode{t}} = \ocamltag{type-var}{'c} \hyperref[Ocamlary-CanonicalTest-Base-List--type-t]{\ocamlinlinecode{Ocamlary.\allowbreak{}CanonicalTest.\allowbreak{}Base.\allowbreak{}List.\allowbreak{}t}}}\\
693706\end{ocamlindent}%
694707\ocamlcodefragment{\ocamltag{keyword}{end}}\\
695708Some ref to \hyperref[Ocamlary-CanonicalTest-Base_Tests-C--type-t]{\ocamlinlinecode{\ocamlinlinecode{CanonicalTest.\allowbreak{}Base\_\allowbreak{}Tests.\allowbreak{}C.\allowbreak{}t}}[p\pageref*{Ocamlary-CanonicalTest-Base_Tests-C--type-t}]} and \hyperref[Ocamlary-CanonicalTest-Base-List--val-id]{\ocamlinlinecode{\ocamlinlinecode{CanonicalTest.\allowbreak{}Base\_\allowbreak{}Tests.\allowbreak{}L.\allowbreak{}id}}[p\pageref*{Ocamlary-CanonicalTest-Base-List--val-id}]}. But also to \hyperref[Ocamlary-CanonicalTest-Base-List]{\ocamlinlinecode{\ocamlinlinecode{CanonicalTest.\allowbreak{}Base.\allowbreak{}List}}[p\pageref*{Ocamlary-CanonicalTest-Base-List}]} and \hyperref[Ocamlary-CanonicalTest-Base-List--type-t]{\ocamlinlinecode{\ocamlinlinecode{CanonicalTest.\allowbreak{}Base.\allowbreak{}List.\allowbreak{}t}}[p\pageref*{Ocamlary-CanonicalTest-Base-List--type-t}]}
···704717\ocamlcodefragment{\ocamltag{keyword}{end}}\\
705718\label{Ocamlary-Aliases--module-A'}\ocamlcodefragment{\ocamltag{keyword}{module} A' = \hyperref[Ocamlary-Aliases-Foo-A]{\ocamlinlinecode{Foo.\allowbreak{}A}}}\\
706719\label{Ocamlary-Aliases--type-tata}\ocamlcodefragment{\ocamltag{keyword}{type} tata = \hyperref[Ocamlary-Aliases-Foo-A--type-t]{\ocamlinlinecode{Foo.\allowbreak{}A.\allowbreak{}t}}}\\
707707-\label{Ocamlary-Aliases--type-tbtb}\ocamlcodefragment{\ocamltag{keyword}{type} tbtb = \hyperref[Ocamlary-Aliases-Foo-B--type-t]{\ocamlinlinecode{Foo.\allowbreak{}B.\allowbreak{}t}}}\\
720720+\label{Ocamlary-Aliases--type-tbtb}\ocamlcodefragment{\ocamltag{keyword}{type} tbtb = \hyperref[Ocamlary-Aliases-Foo-B--type-t]{\ocamlinlinecode{Ocamlary.\allowbreak{}Aliases.\allowbreak{}Foo.\allowbreak{}B.\allowbreak{}t}}}\\
708721\label{Ocamlary-Aliases--type-tete}\ocamlcodefragment{\ocamltag{keyword}{type} tete}\\
709722\label{Ocamlary-Aliases--type-tata'}\ocamlcodefragment{\ocamltag{keyword}{type} tata' = \hyperref[Ocamlary-Aliases-Foo-A--type-t]{\ocamlinlinecode{A'.\allowbreak{}t}}}\\
710710-\label{Ocamlary-Aliases--type-tete2}\ocamlcodefragment{\ocamltag{keyword}{type} tete2 = \hyperref[Ocamlary-Aliases-Foo-E--type-t]{\ocamlinlinecode{Foo.\allowbreak{}E.\allowbreak{}t}}}\\
723723+\label{Ocamlary-Aliases--type-tete2}\ocamlcodefragment{\ocamltag{keyword}{type} tete2 = \hyperref[Ocamlary-Aliases-Foo-E--type-t]{\ocamlinlinecode{Ocamlary.\allowbreak{}Aliases.\allowbreak{}Foo.\allowbreak{}E.\allowbreak{}t}}}\\
711724\label{Ocamlary-Aliases--module-Std}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-Aliases-Std]{\ocamlinlinecode{Std}}}\label{Ocamlary-Aliases-Std}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-Aliases-Std--module-A}\ocamlcodefragment{\ocamltag{keyword}{module} A = \hyperref[Ocamlary-Aliases-Foo-A]{\ocamlinlinecode{Foo.\allowbreak{}A}}}\\
712725\label{Ocamlary-Aliases-Std--module-B}\ocamlcodefragment{\ocamltag{keyword}{module} B = \hyperref[Ocamlary-Aliases-Foo-B]{\ocamlinlinecode{Foo.\allowbreak{}B}}}\\
713726\label{Ocamlary-Aliases-Std--module-C}\ocamlcodefragment{\ocamltag{keyword}{module} C = \hyperref[Ocamlary-Aliases-Foo-C]{\ocamlinlinecode{Foo.\allowbreak{}C}}}\\
714727\label{Ocamlary-Aliases-Std--module-D}\ocamlcodefragment{\ocamltag{keyword}{module} D = \hyperref[Ocamlary-Aliases-Foo-D]{\ocamlinlinecode{Foo.\allowbreak{}D}}}\\
715715-\label{Ocamlary-Aliases-Std--module-E}\ocamlcodefragment{\ocamltag{keyword}{module} E = \hyperref[Ocamlary-Aliases-Foo-E]{\ocamlinlinecode{Foo.\allowbreak{}E}}}\\
728728+\label{Ocamlary-Aliases-Std--module-E}\ocamlcodefragment{\ocamltag{keyword}{module} E = \hyperref[Ocamlary-Aliases-Foo-E]{\ocamlinlinecode{Ocamlary.\allowbreak{}Aliases.\allowbreak{}Foo.\allowbreak{}E}}}\\
716729\end{ocamlindent}%
717730\ocamlcodefragment{\ocamltag{keyword}{end}}\\
718731\label{Ocamlary-Aliases--type-stde}\ocamlcodefragment{\ocamltag{keyword}{type} stde = \hyperref[Ocamlary-Aliases-Foo-E--type-t]{\ocamlinlinecode{Std.\allowbreak{}E.\allowbreak{}t}}}\\
719732\subsubsection{include of Foo\label{Ocamlary-Aliases--incl}}%
720733Just for giggle, let's see what happens when we include \hyperref[Ocamlary-Aliases-Foo]{\ocamlinlinecode{\ocamlinlinecode{Foo}}[p\pageref*{Ocamlary-Aliases-Foo}]}.
721734722722-\ocamltag{keyword}{include} \ocamltag{keyword}{module} \ocamltag{keyword}{type} \ocamltag{keyword}{of} \hyperref[Ocamlary-Aliases-Foo]{\ocamlinlinecode{Foo}}\label{Ocamlary-Aliases--module-A}\ocamlcodefragment{\ocamltag{keyword}{module} A = \hyperref[Ocamlary-Aliases-Foo-A]{\ocamlinlinecode{Foo.\allowbreak{}A}}}\\
723723-\label{Ocamlary-Aliases--module-B}\ocamlcodefragment{\ocamltag{keyword}{module} B = \hyperref[Ocamlary-Aliases-Foo-B]{\ocamlinlinecode{Foo.\allowbreak{}B}}}\\
724724-\label{Ocamlary-Aliases--module-C}\ocamlcodefragment{\ocamltag{keyword}{module} C = \hyperref[Ocamlary-Aliases-Foo-C]{\ocamlinlinecode{Foo.\allowbreak{}C}}}\\
725725-\label{Ocamlary-Aliases--module-D}\ocamlcodefragment{\ocamltag{keyword}{module} D = \hyperref[Ocamlary-Aliases-Foo-D]{\ocamlinlinecode{Foo.\allowbreak{}D}}}\\
735735+\ocamltag{keyword}{include} \ocamltag{keyword}{module} \ocamltag{keyword}{type} \ocamltag{keyword}{of} \hyperref[Ocamlary-Aliases-Foo]{\ocamlinlinecode{Ocamlary.\allowbreak{}Aliases.\allowbreak{}Foo}}\label{Ocamlary-Aliases--module-A}\ocamlcodefragment{\ocamltag{keyword}{module} A = \hyperref[Ocamlary-Aliases-Foo-A]{\ocamlinlinecode{Ocamlary.\allowbreak{}Aliases.\allowbreak{}Foo.\allowbreak{}A}}}\\
736736+\label{Ocamlary-Aliases--module-B}\ocamlcodefragment{\ocamltag{keyword}{module} B = \hyperref[Ocamlary-Aliases-Foo-B]{\ocamlinlinecode{Ocamlary.\allowbreak{}Aliases.\allowbreak{}Foo.\allowbreak{}B}}}\\
737737+\label{Ocamlary-Aliases--module-C}\ocamlcodefragment{\ocamltag{keyword}{module} C = \hyperref[Ocamlary-Aliases-Foo-C]{\ocamlinlinecode{Ocamlary.\allowbreak{}Aliases.\allowbreak{}Foo.\allowbreak{}C}}}\\
738738+\label{Ocamlary-Aliases--module-D}\ocamlcodefragment{\ocamltag{keyword}{module} D = \hyperref[Ocamlary-Aliases-Foo-D]{\ocamlinlinecode{Ocamlary.\allowbreak{}Aliases.\allowbreak{}Foo.\allowbreak{}D}}}\\
726739\label{Ocamlary-Aliases--module-E}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-Aliases-E]{\ocamlinlinecode{E}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig} .\allowbreak{}.\allowbreak{}.\allowbreak{} \ocamltag{keyword}{end}}\\
727740\label{Ocamlary-Aliases--type-testa}\ocamlcodefragment{\ocamltag{keyword}{type} testa = \hyperref[Ocamlary-Aliases-Foo-A--type-t]{\ocamlinlinecode{A.\allowbreak{}t}}}\\
728741And also, let's refer to \hyperref[Ocamlary-Aliases-Foo-A--type-t]{\ocamlinlinecode{\ocamlinlinecode{A.\allowbreak{}t}}[p\pageref*{Ocamlary-Aliases-Foo-A--type-t}]} and \hyperref[Ocamlary-Aliases-Foo-B--val-id]{\ocamlinlinecode{\ocamlinlinecode{Foo.\allowbreak{}B.\allowbreak{}id}}[p\pageref*{Ocamlary-Aliases-Foo-B--val-id}]}
729742730743\label{Ocamlary-Aliases--module-P1}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-Aliases-P1]{\ocamlinlinecode{P1}}}\label{Ocamlary-Aliases-P1}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-Aliases-P1--module-Y}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-Aliases-P1-Y]{\ocamlinlinecode{Y}}}\label{Ocamlary-Aliases-P1-Y}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-Aliases-P1-Y--type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t}\\
731731-\label{Ocamlary-Aliases-P1-Y--val-id}\ocamlcodefragment{\ocamltag{keyword}{val} id : \hyperref[Ocamlary-Aliases-P1-Y--type-t]{\ocamlinlinecode{t}} \ocamltag{arrow}{$\rightarrow$} \hyperref[Ocamlary-Aliases-P1-Y--type-t]{\ocamlinlinecode{t}}}\\
744744+\label{Ocamlary-Aliases-P1-Y--val-id}\ocamlcodefragment{\ocamltag{keyword}{val} id : \hyperref[Ocamlary-Aliases-P1-Y--type-t]{\ocamlinlinecode{Ocamlary.\allowbreak{}Aliases.\allowbreak{}P1.\allowbreak{}Y.\allowbreak{}t}} \ocamltag{arrow}{$\rightarrow$} \hyperref[Ocamlary-Aliases-P1-Y--type-t]{\ocamlinlinecode{Ocamlary.\allowbreak{}Aliases.\allowbreak{}P1.\allowbreak{}Y.\allowbreak{}t}}}\\
732745\end{ocamlindent}%
733746\ocamlcodefragment{\ocamltag{keyword}{end}}\\
734747\end{ocamlindent}%
···736749\label{Ocamlary-Aliases--module-P2}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-Aliases-P2]{\ocamlinlinecode{P2}}}\label{Ocamlary-Aliases-P2}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-Aliases-P2--module-Z}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-Aliases-P2-Z]{\ocamlinlinecode{Z}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig} .\allowbreak{}.\allowbreak{}.\allowbreak{} \ocamltag{keyword}{end}}\\
737750\end{ocamlindent}%
738751\ocamlcodefragment{\ocamltag{keyword}{end}}\\
739739-\label{Ocamlary-Aliases--module-X1}\ocamlcodefragment{\ocamltag{keyword}{module} X1 = \hyperref[Ocamlary-Aliases-P2-Z]{\ocamlinlinecode{P2.\allowbreak{}Z}}}\\
752752+\label{Ocamlary-Aliases--module-X1}\ocamlcodefragment{\ocamltag{keyword}{module} X1 = \hyperref[Ocamlary-Aliases-P2-Z]{\ocamlinlinecode{Ocamlary.\allowbreak{}Aliases.\allowbreak{}P2.\allowbreak{}Z}}}\\
740753\label{Ocamlary-Aliases--module-X2}\ocamlcodefragment{\ocamltag{keyword}{module} X2 = \hyperref[Ocamlary-Aliases-P2-Z]{\ocamlinlinecode{P2.\allowbreak{}Z}}}\\
741754\label{Ocamlary-Aliases--type-p1}\ocamlcodefragment{\ocamltag{keyword}{type} p1 = \hyperref[Ocamlary-Aliases-P2-Z--type-t]{\ocamlinlinecode{X1.\allowbreak{}t}}}\\
742755\label{Ocamlary-Aliases--type-p2}\ocamlcodefragment{\ocamltag{keyword}{type} p2 = \hyperref[Ocamlary-Aliases-P2-Z--type-t]{\ocamlinlinecode{X2.\allowbreak{}t}}}\\
···785798\end{ocamlindent}%
786799\ocamlcodefragment{\ocamltag{keyword}{end}}\\
787800\label{Ocamlary--type-new_t}\ocamlcodefragment{\ocamltag{keyword}{type} new\_\allowbreak{}t = .\allowbreak{}.\allowbreak{}}\\
788788-\label{Ocamlary--extension-decl-C}\ocamlcodefragment{\ocamltag{keyword}{type} \hyperref[Ocamlary--type-new_t]{\ocamlinlinecode{new\_\allowbreak{}t}} += }\\
801801+\label{Ocamlary--extension-decl-C}\ocamlcodefragment{\ocamltag{keyword}{type} \hyperref[Ocamlary--type-new_t]{\ocamlinlinecode{Ocamlary.\allowbreak{}new\_\allowbreak{}t}} += }\\
789802\begin{ocamltabular}{p{1.000\textwidth}}\ocamlcodefragment{| \ocamltag{extension}{C}}\label{Ocamlary--extension-C}\\
790803\end{ocamltabular}%
791804\\
792792-\label{Ocamlary--module-type-TypeExtPruned}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[Ocamlary-module-type-TypeExtPruned]{\ocamlinlinecode{TypeExtPruned}}}\label{Ocamlary-module-type-TypeExtPruned}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-module-type-TypeExtPruned--extension-decl-C}\ocamlcodefragment{\ocamltag{keyword}{type} \hyperref[Ocamlary--type-new_t]{\ocamlinlinecode{new\_\allowbreak{}t}} += }\\
805805+\label{Ocamlary--module-type-TypeExtPruned}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[Ocamlary-module-type-TypeExtPruned]{\ocamlinlinecode{TypeExtPruned}}}\label{Ocamlary-module-type-TypeExtPruned}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-module-type-TypeExtPruned--extension-decl-C}\ocamlcodefragment{\ocamltag{keyword}{type} \hyperref[Ocamlary--type-new_t]{\ocamlinlinecode{Ocamlary.\allowbreak{}new\_\allowbreak{}t}} += }\\
793806\begin{ocamltabular}{p{1.000\textwidth}}\ocamlcodefragment{| \ocamltag{extension}{C}}\label{Ocamlary-module-type-TypeExtPruned--extension-C}\\
794807\end{ocamltabular}%
795808\\
796796-\label{Ocamlary-module-type-TypeExtPruned--val-f}\ocamlcodefragment{\ocamltag{keyword}{val} f : \hyperref[Ocamlary--type-new_t]{\ocamlinlinecode{new\_\allowbreak{}t}} \ocamltag{arrow}{$\rightarrow$} unit}\\
809809+\label{Ocamlary-module-type-TypeExtPruned--val-f}\ocamlcodefragment{\ocamltag{keyword}{val} f : \hyperref[Ocamlary--type-new_t]{\ocamlinlinecode{Ocamlary.\allowbreak{}new\_\allowbreak{}t}} \ocamltag{arrow}{$\rightarrow$} unit}\\
797810\end{ocamlindent}%
798811\ocamlcodefragment{\ocamltag{keyword}{end}}\\
799812\label{Ocamlary--module-Op}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Ocamlary-Op]{\ocamlinlinecode{Op}}}\label{Ocamlary-Op}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Ocamlary-Op--val-(let*)}\ocamlcodefragment{\ocamltag{keyword}{val} (let*) : int}\\
+28
odoc/test/generators/latex/Recent.tex
···2222\ocamlcodefragment{\}}\label{Recent--type-variant.E}%
2323\begin{ocamlindent}\end{ocamlindent}%
2424\end{ocamlindent}%
2525+<<<<<<< HEAD
2526\label{Recent--type-gadt}\ocamlcodefragment{\ocamltag{keyword}{type} \_\allowbreak{} gadt = }\begin{ocamlindent}\ocamlcodefragment{| \ocamltag{constructor}{A} : int \hyperref[Recent--type-gadt]{\ocamlinlinecode{gadt}}}\label{Recent--type-gadt.A}%
2627\begin{ocamlindent}\end{ocamlindent}%
2728\ocamlcodefragment{| \ocamltag{constructor}{B} : int \ocamltag{arrow}{$\rightarrow$} string \hyperref[Recent--type-gadt]{\ocamlinlinecode{gadt}}}\label{Recent--type-gadt.B}%
2929+=======
3030+\label{Recent-type-gadt}\ocamlcodefragment{\ocamltag{keyword}{type} \_\allowbreak{} gadt = }\begin{ocamlindent}\ocamlcodefragment{| \ocamltag{constructor}{A} : int \hyperref[Recent-type-gadt]{\ocamlinlinecode{Recent.\allowbreak{}gadt}}}\label{Recent-type-gadt.A}%
3131+\begin{ocamlindent}\end{ocamlindent}%
3232+\ocamlcodefragment{| \ocamltag{constructor}{B} : int \ocamltag{arrow}{$\rightarrow$} string \hyperref[Recent-type-gadt]{\ocamlinlinecode{Recent.\allowbreak{}gadt}}}\label{Recent-type-gadt.B}%
3333+>>>>>>> baf34b7f4 (Add markdown to generator tests)
2834\begin{ocamlindent}foo\end{ocamlindent}%
2935\ocamlcodefragment{| \ocamltag{constructor}{C} : \{}\\
3036\begin{ocamltabular}{p{1.000\textwidth}}\ocamlinlinecode{a : int;\allowbreak{}}\label{Recent--type-gadt.a}\\
3137\end{ocamltabular}%
3238\\
3939+<<<<<<< HEAD
3340\ocamlcodefragment{\} \ocamltag{arrow}{$\rightarrow$} unit \hyperref[Recent--type-gadt]{\ocamlinlinecode{gadt}}}\label{Recent--type-gadt.C}%
4141+=======
4242+\ocamlcodefragment{\} \ocamltag{arrow}{$\rightarrow$} unit \hyperref[Recent-type-gadt]{\ocamlinlinecode{Recent.\allowbreak{}gadt}}}\label{Recent-type-gadt.C}%
4343+>>>>>>> baf34b7f4 (Add markdown to generator tests)
3444\begin{ocamlindent}\end{ocamlindent}%
3545\end{ocamlindent}%
3646\label{Recent--type-polymorphic_variant}\ocamlcodefragment{\ocamltag{keyword}{type} polymorphic\_\allowbreak{}variant = [ }\\
···4151\end{ocamltabular}%
4252\\
4353\ocamlcodefragment{ ]}\\
5454+<<<<<<< HEAD
4455\label{Recent--type-empty_variant}\ocamlcodefragment{\ocamltag{keyword}{type} empty\_\allowbreak{}variant = |}\\
4556\label{Recent--type-nonrec_}\ocamlcodefragment{\ocamltag{keyword}{type} \ocamltag{keyword}{nonrec} nonrec\_\allowbreak{} = int}\\
4657\label{Recent--type-empty_conj}\ocamlcodefragment{\ocamltag{keyword}{type} empty\_\allowbreak{}conj = }\\
···4960\\
5061\label{Recent--type-conj}\ocamlcodefragment{\ocamltag{keyword}{type} conj = }\\
5162\begin{ocamltabular}{p{1.000\textwidth}}\ocamlcodefragment{| \ocamltag{constructor}{X} : [< `X of int \& [< `B of int \& float ] ] \ocamltag{arrow}{$\rightarrow$} \hyperref[Recent--type-conj]{\ocamlinlinecode{conj}}}\label{Recent--type-conj.X}\\
6363+=======
6464+\label{Recent-type-empty_variant}\ocamlcodefragment{\ocamltag{keyword}{type} empty\_\allowbreak{}variant = |}\\
6565+\label{Recent-type-nonrec_}\ocamlcodefragment{\ocamltag{keyword}{type} \ocamltag{keyword}{nonrec} nonrec\_\allowbreak{} = int}\\
6666+\label{Recent-type-empty_conj}\ocamlcodefragment{\ocamltag{keyword}{type} empty\_\allowbreak{}conj = }\\
6767+\begin{ocamltabular}{p{1.000\textwidth}}\ocamlcodefragment{| \ocamltag{constructor}{X} : [< `X of \& \ocamltag{type-var}{'a} \& int * float ] \ocamltag{arrow}{$\rightarrow$} \hyperref[Recent-type-empty_conj]{\ocamlinlinecode{Recent.\allowbreak{}empty\_\allowbreak{}conj}}}\label{Recent-type-empty_conj.X}\\
6868+\end{ocamltabular}%
6969+\\
7070+\label{Recent-type-conj}\ocamlcodefragment{\ocamltag{keyword}{type} conj = }\\
7171+\begin{ocamltabular}{p{1.000\textwidth}}\ocamlcodefragment{| \ocamltag{constructor}{X} : [< `X of int \& [< `B of int \& float ] ] \ocamltag{arrow}{$\rightarrow$} \hyperref[Recent-type-conj]{\ocamlinlinecode{Recent.\allowbreak{}conj}}}\label{Recent-type-conj.X}\\
7272+>>>>>>> baf34b7f4 (Add markdown to generator tests)
5273\end{ocamltabular}%
5374\\
5475\label{Recent--val-empty_conj}\ocamlcodefragment{\ocamltag{keyword}{val} empty\_\allowbreak{}conj : [< `X of \& \ocamltag{type-var}{'a} \& int * float ]}\\
···6081\ocamlcodefragment{\ocamltag{keyword}{end}}\\
6182\end{ocamlindent}%
6283\ocamlcodefragment{\ocamltag{keyword}{end}}\\
8484+<<<<<<< HEAD
6385\label{Recent--module-X}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Recent-X]{\ocamlinlinecode{X}}}\label{Recent-X}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Recent-X--module-L}\ocamlcodefragment{\ocamltag{keyword}{module} L := \hyperref[Recent-Z-Y]{\ocamlinlinecode{Z.\allowbreak{}Y}}}\\
6486\label{Recent-X--type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = int \hyperref[Recent-Z-Y-X--type-t]{\ocamlinlinecode{L.\allowbreak{}X.\allowbreak{}t}}}\\
6587\label{Recent-X--type-u}\ocamlcodefragment{\ocamltag{keyword}{type} u := int}\\
6688\label{Recent-X--type-v}\ocamlcodefragment{\ocamltag{keyword}{type} v = \hyperref[Recent-X--type-u]{\ocamlinlinecode{u}} \hyperref[Recent-Z-Y-X--type-t]{\ocamlinlinecode{L.\allowbreak{}X.\allowbreak{}t}}}\\
8989+=======
9090+\label{Recent-module-X}\ocamlcodefragment{\ocamltag{keyword}{module} \hyperref[Recent-X]{\ocamlinlinecode{X}}}\ocamlcodefragment{ : \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Recent-X-module-L}\ocamlcodefragment{\ocamltag{keyword}{module} L := \hyperref[Recent-Z-Y]{\ocamlinlinecode{Recent.\allowbreak{}Z.\allowbreak{}Y}}}\\
9191+\label{Recent-X-type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = int \hyperref[Recent-Z-Y-X-type-t]{\ocamlinlinecode{L.\allowbreak{}X.\allowbreak{}t}}}\\
9292+\label{Recent-X-type-u}\ocamlcodefragment{\ocamltag{keyword}{type} u := int}\\
9393+\label{Recent-X-type-v}\ocamlcodefragment{\ocamltag{keyword}{type} v = \hyperref[Recent-X-type-u]{\ocamlinlinecode{Recent.\allowbreak{}X.\allowbreak{}u}} \hyperref[Recent-Z-Y-X-type-t]{\ocamlinlinecode{L.\allowbreak{}X.\allowbreak{}t}}}\\
9494+>>>>>>> baf34b7f4 (Add markdown to generator tests)
6795\end{ocamlindent}%
6896\ocamlcodefragment{\ocamltag{keyword}{end}}\\
6997\label{Recent--module-type-PolyS}\ocamlcodefragment{\ocamltag{keyword}{module} \ocamltag{keyword}{type} \hyperref[Recent-module-type-PolyS]{\ocamlinlinecode{PolyS}}}\label{Recent-module-type-PolyS}\ocamlcodefragment{ = \ocamltag{keyword}{sig}}\begin{ocamlindent}\label{Recent-module-type-PolyS--type-t}\ocamlcodefragment{\ocamltag{keyword}{type} t = [ }\\
+1-1
odoc/test/generators/latex/Recent_impl.tex
···2121\label{Recent_impl-module-type-S--val-f}\ocamlcodefragment{\ocamltag{keyword}{val} f : \hyperref[Recent_impl-module-type-S-F--type-t]{\ocamlinlinecode{F(X).\allowbreak{}t}}}\\
2222\end{ocamlindent}%
2323\ocamlcodefragment{\ocamltag{keyword}{end}}\\
2424-\label{Recent_impl--module-B'}\ocamlcodefragment{\ocamltag{keyword}{module} B' = \hyperref[Recent_impl-Foo-B]{\ocamlinlinecode{Foo.\allowbreak{}B}}}\\
2424+\label{Recent_impl--module-B'}\ocamlcodefragment{\ocamltag{keyword}{module} B' = \hyperref[Recent_impl-Foo-B]{\ocamlinlinecode{Recent\_\allowbreak{}impl.\allowbreak{}Foo.\allowbreak{}B}}}\\
25252626\input{Recent_impl.B.tex}
···1414.SH Documentation
1515.sp
1616.nf
1717-\f[CB]type\fR t = Y\.t
1717+\f[CB]type\fR t = Include2\.Y\.t
+6-6
odoc/test/generators/man/Labels.3o
···2929Attached to type
3030.nf
3131.sp
3232-\f[CB]val\fR f : t
3232+\f[CB]val\fR f : Labels\.t
3333.fi
3434.br
3535.ti +2
3636Attached to value
3737.nf
3838.sp
3939-\f[CB]val\fR e : unit \f[CB]\->\fR t
3939+\f[CB]val\fR e : unit \f[CB]\->\fR Labels\.t
4040.fi
4141.br
4242.ti +2
···7878.sp
7979\f[CB]type\fR x = \.\.
8080.sp
8181-\f[CB]type\fR x +=
8181+\f[CB]type\fR Labels\.x +=
8282.br
8383.ti +2
8484| \f[CB]X\fR
···8989Attached to extension
9090.nf
9191.sp
9292-\f[CB]module\fR S := A
9292+\f[CB]module\fR S := Labels\.A
9393.fi
9494.br
9595.ti +2
9696Attached to module subst
9797.nf
9898.sp
9999-\f[CB]type\fR s := t
9999+\f[CB]type\fR s := Labels\.t
100100.fi
101101.br
102102.ti +2
···115115\f[CB]type\fR v = {
116116.br
117117.ti +2
118118-f : t;
118118+f : Labels\.t;
119119.br
120120.ti +4
121121(* Attached to field *)
+2-2
odoc/test/generators/man/Module.3o
···4646.sp
4747\f[CB]module\fR \f[CB]type\fR S1
4848.sp
4949-\f[CB]module\fR \f[CB]type\fR S2 = S
4949+\f[CB]module\fR \f[CB]type\fR S2 = Module\.S
5050.sp
5151\f[CB]module\fR \f[CB]type\fR S3 = \f[CB]sig\fR
5252.br
···134134\f[CB]type\fR ('a, 'b) w
135135.sp
136136.ti +2
137137-\f[CB]module\fR M = M'
137137+\f[CB]module\fR M = Module\.M'
138138.br
139139\f[CB]end\fR
140140.sp
+2-2
odoc/test/generators/man/Module_type_alias.3o
···4545.br
4646\f[CB]end\fR
4747.sp
4848-\f[CB]module\fR \f[CB]type\fR D = A
4848+\f[CB]module\fR \f[CB]type\fR D = Module_type_alias\.A
4949.sp
5050\f[CB]module\fR \f[CB]type\fR E = \f[CB]sig\fR
5151.br
···104104.br
105105\f[CB]end\fR
106106.sp
107107-\f[CB]module\fR \f[CB]type\fR I = B
107107+\f[CB]module\fR \f[CB]type\fR I = Module_type_alias\.B
+1-1
odoc/test/generators/man/Module_type_of.3o
···4444.sp
4545\f[CB]module\fR X : \f[CB]sig\fR \.\.\. \f[CB]end\fR
4646.sp
4747-\f[CB]module\fR T : S \f[CB]with\fR \f[CB]module\fR M = X
4747+\f[CB]module\fR T : Module_type_of\.S \f[CB]with\fR \f[CB]module\fR M = Module_type_of\.X
+1-1
odoc/test/generators/man/Module_type_of.T.3o
···1818.br
1919\f[CB]end\fR
2020.sp
2121-\f[CB]module\fR M = X
2121+\f[CB]module\fR M = Module_type_of\.X
2222.sp
2323\f[CB]module\fR N : \f[CB]module\fR \f[CB]type\fR \f[CB]of\fR \f[CB]struct\fR \f[CB]include\fR M \f[CB]end\fR
···1616\f[CB]module\fR \f[CB]type\fR local = \f[CB]sig\fR
1717.br
1818.ti +2
1919-\f[CB]type\fR t = local
1919+\f[CB]type\fR t = Module_type_subst\.Local\.local
2020.br
2121\f[CB]end\fR
2222.sp
2323-\f[CB]module\fR \f[CB]type\fR w = local
2323+\f[CB]module\fR \f[CB]type\fR w = Module_type_subst\.Local\.local
2424.sp
2525\f[CB]module\fR \f[CB]type\fR s = \f[CB]sig\fR \f[CB]end\fR
···2020.sp
2121\f[CB]type\fR tata = Foo\.A\.t
2222.sp
2323-\f[CB]type\fR tbtb = Foo\.B\.t
2323+\f[CB]type\fR tbtb = Ocamlary\.Aliases\.Foo\.B\.t
2424.sp
2525\f[CB]type\fR tete
2626.sp
2727\f[CB]type\fR tata' = A'\.t
2828.sp
2929-\f[CB]type\fR tete2 = Foo\.E\.t
2929+\f[CB]type\fR tete2 = Ocamlary\.Aliases\.Foo\.E\.t
3030.sp
3131\f[CB]module\fR Std : \f[CB]sig\fR \.\.\. \f[CB]end\fR
3232.sp
···4040Just for giggle, let's see what happens when we include \f[CI]Foo\fR\.
4141.nf
4242.sp
4343-\f[CB]module\fR A = Foo\.A
4343+\f[CB]module\fR A = Ocamlary\.Aliases\.Foo\.A
4444.sp
4545-\f[CB]module\fR B = Foo\.B
4545+\f[CB]module\fR B = Ocamlary\.Aliases\.Foo\.B
4646.sp
4747-\f[CB]module\fR C = Foo\.C
4747+\f[CB]module\fR C = Ocamlary\.Aliases\.Foo\.C
4848.sp
4949-\f[CB]module\fR D = Foo\.D
4949+\f[CB]module\fR D = Ocamlary\.Aliases\.Foo\.D
5050.sp
5151\f[CB]module\fR E : \f[CB]sig\fR \.\.\. \f[CB]end\fR
5252.sp
···6060.sp
6161\f[CB]module\fR P2 : \f[CB]sig\fR \.\.\. \f[CB]end\fR
6262.sp
6363-\f[CB]module\fR X1 = P2\.Z
6363+\f[CB]module\fR X1 = Ocamlary\.Aliases\.P2\.Z
6464.sp
6565\f[CB]module\fR X2 = P2\.Z
6666.sp
+1-1
odoc/test/generators/man/Ocamlary.Aliases.E.3o
···1313.nf
1414\f[CB]type\fR t
1515.sp
1616-\f[CB]val\fR id : t \f[CB]\->\fR t
1616+\f[CB]val\fR id : Ocamlary\.Aliases\.E\.t \f[CB]\->\fR Ocamlary\.Aliases\.E\.t
···1313.nf
1414\f[CB]type\fR t
1515.sp
1616-\f[CB]val\fR id : t \f[CB]\->\fR t
1616+\f[CB]val\fR id : Ocamlary\.Aliases\.Foo\.A\.t \f[CB]\->\fR Ocamlary\.Aliases\.Foo\.A\.t
···1313.nf
1414\f[CB]type\fR t
1515.sp
1616-\f[CB]val\fR id : t \f[CB]\->\fR t
1616+\f[CB]val\fR id : Ocamlary\.Aliases\.Foo\.B\.t \f[CB]\->\fR Ocamlary\.Aliases\.Foo\.B\.t
···1313.nf
1414\f[CB]type\fR t
1515.sp
1616-\f[CB]val\fR id : t \f[CB]\->\fR t
1616+\f[CB]val\fR id : Ocamlary\.Aliases\.Foo\.C\.t \f[CB]\->\fR Ocamlary\.Aliases\.Foo\.C\.t
···1313.nf
1414\f[CB]type\fR t
1515.sp
1616-\f[CB]val\fR id : t \f[CB]\->\fR t
1616+\f[CB]val\fR id : Ocamlary\.Aliases\.Foo\.D\.t \f[CB]\->\fR Ocamlary\.Aliases\.Foo\.D\.t
···1313.nf
1414\f[CB]type\fR t
1515.sp
1616-\f[CB]val\fR id : t \f[CB]\->\fR t
1616+\f[CB]val\fR id : Ocamlary\.Aliases\.Foo\.E\.t \f[CB]\->\fR Ocamlary\.Aliases\.Foo\.E\.t
+1-1
odoc/test/generators/man/Ocamlary.Aliases.P1.Y.3o
···1313.nf
1414\f[CB]type\fR t
1515.sp
1616-\f[CB]val\fR id : t \f[CB]\->\fR t
1616+\f[CB]val\fR id : Ocamlary\.Aliases\.P1\.Y\.t \f[CB]\->\fR Ocamlary\.Aliases\.P1\.Y\.t
+1-1
odoc/test/generators/man/Ocamlary.Aliases.P2.Z.3o
···1313.nf
1414\f[CB]type\fR t
1515.sp
1616-\f[CB]val\fR id : t \f[CB]\->\fR t
1616+\f[CB]val\fR id : Ocamlary\.Aliases\.P2\.Z\.t \f[CB]\->\fR Ocamlary\.Aliases\.P2\.Z\.t
+1-1
odoc/test/generators/man/Ocamlary.Aliases.Std.3o
···1919.sp
2020\f[CB]module\fR D = Foo\.D
2121.sp
2222-\f[CB]module\fR E = Foo\.E
2222+\f[CB]module\fR E = Ocamlary\.Aliases\.Foo\.E
···1313.nf
1414\f[CB]type\fR 'a t
1515.sp
1616-\f[CB]val\fR id : \f[CB]'a\fR t \f[CB]\->\fR \f[CB]'a\fR t
1616+\f[CB]val\fR id :
1717+ \f[CB]'a\fR Ocamlary\.CanonicalTest\.Base\.List\.t \f[CB]\->\fR
1818+ \f[CB]'a\fR Ocamlary\.CanonicalTest\.Base\.List\.t
···1313.nf
1414\f[CB]type\fR 'a t
1515.sp
1616-\f[CB]val\fR id : \f[CB]'a\fR t \f[CB]\->\fR \f[CB]'a\fR t
1616+\f[CB]val\fR id :
1717+ \f[CB]'a\fR Ocamlary\.CanonicalTest\.Base_Tests\.C\.t \f[CB]\->\fR
1818+ \f[CB]'a\fR Ocamlary\.CanonicalTest\.Base_Tests\.C\.t
···1414.SH Documentation
1515.sp
1616.nf
1717-\f[CB]type\fR t = (unit, unit) a_function
1717+\f[CB]type\fR t = (unit, unit) Ocamlary\.a_function
1818.fi
1919.br
2020.ti +2
+1-1
odoc/test/generators/man/Ocamlary.Dep1.X.3o
···1111.SH Documentation
1212.sp
1313.nf
1414-\f[CB]module\fR Y : S
1414+\f[CB]module\fR Y : Ocamlary\.Dep1\.S
+1-1
odoc/test/generators/man/Ocamlary.Dep2.3o
···2525\f[CB]module\fR X : \f[CB]sig\fR
2626.br
2727.ti +4
2828-\f[CB]module\fR Y : S
2828+\f[CB]module\fR Y : Arg\.S
2929.br
3030.ti +2
3131\f[CB]end\fR
+1-1
odoc/test/generators/man/Ocamlary.Dep4.3o
···3434.br
3535\f[CB]end\fR
3636.sp
3737-\f[CB]module\fR X : T
3737+\f[CB]module\fR X : Ocamlary\.Dep4\.T
+3-3
odoc/test/generators/man/Ocamlary.Dep5.3o
···2525\f[CB]module\fR \f[CB]type\fR S = \f[CB]sig\fR
2626.br
2727.ti +4
2828-\f[CB]module\fR X : T
2828+\f[CB]module\fR X : Arg\.T
2929.sp
3030.ti +4
3131\f[CB]module\fR Y : \f[CB]sig\fR \f[CB]end\fR
···3434\f[CB]end\fR
3535.sp
3636.ti +2
3737-\f[CB]module\fR X : T
3737+\f[CB]module\fR X : Arg\.T
3838.br
3939\f[CB]end\fR
4040.sp
···4242\fB2 Signature\fR
4343.in
4444.sp
4545-\f[CB]module\fR Z : Arg\.S \f[CB]with\fR \f[CB]module\fR Y = Dep3
4545+\f[CB]module\fR Z : Arg\.S \f[CB]with\fR \f[CB]module\fR Y = Ocamlary\.Dep3
+1-1
odoc/test/generators/man/Ocamlary.Dep5.Z.3o
···1313.nf
1414\f[CB]module\fR X : Arg\.T
1515.sp
1616-\f[CB]module\fR Y = Dep3
1616+\f[CB]module\fR Y = Ocamlary\.Dep3
+2-2
odoc/test/generators/man/Ocamlary.Dep6.3o
···2121\f[CB]module\fR \f[CB]type\fR T = \f[CB]sig\fR
2222.br
2323.ti +2
2424-\f[CB]module\fR \f[CB]type\fR R = S
2424+\f[CB]module\fR \f[CB]type\fR R = Ocamlary\.Dep6\.S
2525.sp
2626.ti +2
2727\f[CB]module\fR Y : \f[CB]sig\fR
···3434.br
3535\f[CB]end\fR
3636.sp
3737-\f[CB]module\fR X : T
3737+\f[CB]module\fR X : Ocamlary\.Dep6\.T
+2-2
odoc/test/generators/man/Ocamlary.Dep6.X.3o
···1111.SH Documentation
1212.sp
1313.nf
1414-\f[CB]module\fR \f[CB]type\fR R = S
1414+\f[CB]module\fR \f[CB]type\fR R = Ocamlary\.Dep6\.S
1515.sp
1616-\f[CB]module\fR Y : R
1616+\f[CB]module\fR Y : Ocamlary\.Dep6\.X\.R
+3-3
odoc/test/generators/man/Ocamlary.Dep7.3o
···2525\f[CB]module\fR \f[CB]type\fR T = \f[CB]sig\fR
2626.br
2727.ti +4
2828-\f[CB]module\fR \f[CB]type\fR R = S
2828+\f[CB]module\fR \f[CB]type\fR R = Arg\.S
2929.sp
3030.ti +4
3131\f[CB]module\fR Y : R
···3737\f[CB]module\fR X : \f[CB]sig\fR
3838.br
3939.ti +4
4040-\f[CB]module\fR \f[CB]type\fR R = S
4040+\f[CB]module\fR \f[CB]type\fR R = Arg\.S
4141.sp
4242.ti +4
4343-\f[CB]module\fR Y : R
4343+\f[CB]module\fR Y : Arg\.X\.R
4444.br
4545.ti +2
4646\f[CB]end\fR
+1-1
odoc/test/generators/man/Ocamlary.Dep7.M.3o
···1313.nf
1414\f[CB]module\fR \f[CB]type\fR R = Arg\.S
1515.sp
1616-\f[CB]module\fR Y : R
1616+\f[CB]module\fR Y : M\.R
+1-1
odoc/test/generators/man/Ocamlary.ExtMod.3o
···1313.nf
1414\f[CB]type\fR t = \.\.
1515.sp
1616-\f[CB]type\fR t +=
1616+\f[CB]type\fR Ocamlary\.ExtMod\.t +=
1717.br
1818.ti +2
1919| \f[CB]Leisureforce\fR
···1414.SH Documentation
1515.sp
1616.nf
1717-\f[CB]type\fR t = (unit, unit) a_function
1717+\f[CB]type\fR t = (unit, unit) Ocamlary\.a_function
1818.fi
1919.br
2020.ti +2
+1-1
odoc/test/generators/man/Ocamlary.With3.3o
···1111.SH Documentation
1212.sp
1313.nf
1414-\f[CB]module\fR M = With2
1414+\f[CB]module\fR M = Ocamlary\.With2
1515.sp
1616\f[CB]module\fR N : M\.S
+1-1
odoc/test/generators/man/Ocamlary.With4.3o
···1111.SH Documentation
1212.sp
1313.nf
1414-\f[CB]module\fR N : With2\.S
1414+\f[CB]module\fR N : Ocamlary\.With2\.S
+1-1
odoc/test/generators/man/Ocamlary.With5.3o
···1818.br
1919\f[CB]end\fR
2020.sp
2121-\f[CB]module\fR N : S
2121+\f[CB]module\fR N : Ocamlary\.With5\.S
+1-1
odoc/test/generators/man/Ocamlary.With6.3o
···2020\f[CB]module\fR \f[CB]type\fR S
2121.sp
2222.ti +4
2323-\f[CB]module\fR N : S
2323+\f[CB]module\fR N : M\.S
2424.br
2525.ti +2
2626\f[CB]end\fR
+5-5
odoc/test/generators/man/Recent.3o
···6464\f[CB]type\fR _ gadt =
6565.br
6666.ti +2
6767-| \f[CB]A\fR : int gadt
6767+| \f[CB]A\fR : int Recent\.gadt
6868.br
6969.ti +2
7070-| \f[CB]B\fR : int \f[CB]\->\fR string gadt
7070+| \f[CB]B\fR : int \f[CB]\->\fR string Recent\.gadt
7171.br
7272.ti +4
7373(* foo *)
···7979a : int;
8080.br
8181.ti +4
8282-} \f[CB]\->\fR unit gadt
8282+} \f[CB]\->\fR unit Recent\.gadt
8383.br
8484.sp
8585\f[CB]type\fR polymorphic_variant = [
···111111\f[CB]type\fR empty_conj =
112112.br
113113.ti +2
114114-| \f[CB]X\fR : [< `X of & \f[CB]'a\fR & int * float ] \f[CB]\->\fR empty_conj
114114+| \f[CB]X\fR : [< `X of & \f[CB]'a\fR & int * float ] \f[CB]\->\fR Recent\.empty_conj
115115.br
116116.sp
117117\f[CB]type\fR conj =
118118.br
119119.ti +2
120120-| \f[CB]X\fR : [< `X of int & [< `B of int & float ] ] \f[CB]\->\fR conj
120120+| \f[CB]X\fR : [< `X of int & [< `B of int & float ] ] \f[CB]\->\fR Recent\.conj
121121.br
122122.sp
123123\f[CB]val\fR empty_conj : [< `X of & \f[CB]'a\fR & int * float ]
+2-2
odoc/test/generators/man/Recent.X.3o
···1111.SH Documentation
1212.sp
1313.nf
1414-\f[CB]module\fR L := Z\.Y
1414+\f[CB]module\fR L := Recent\.Z\.Y
1515.sp
1616\f[CB]type\fR t = int L\.X\.t
1717.sp
1818\f[CB]type\fR u := int
1919.sp
2020-\f[CB]type\fR v = u L\.X\.t
2020+\f[CB]type\fR v = Recent\.X\.u L\.X\.t
+1-1
odoc/test/generators/man/Recent_impl.3o
···4747.br
4848\f[CB]end\fR
4949.sp
5050-\f[CB]module\fR B' = Foo\.B
5050+\f[CB]module\fR B' = Recent_impl\.Foo\.B
···8585Doc of M'', part 1\.
8686.nf
8787.sp
8888-\f[CB]module\fR Alias : T
8888+\f[CB]module\fR Alias : Toplevel_comments\.T
8989.fi
9090.br
9191.ti +2
···55module type S = sig ... end
66```
77```
88-module type S1 = functor (_ : S) -> S
88+module type S1 = functor (_ : Functor.S) -> Functor.S
99```
1010```
1111-module F1 (Arg : S) : S
1111+module F1 (Arg : Functor.S) : Functor.S
1212```
1313```
1414-module F2 (Arg : S) : S with type t = Arg.t
1414+module F2 (Arg : Functor.S) : Functor.S with type t = Arg.t
1515```
1616```
1717-module F3 (Arg : S) : sig ... end
1717+module F3 (Arg : Functor.S) : sig ... end
1818```
1919```
2020-module F4 (Arg : S) : S
2020+module F4 (Arg : Functor.S) : Functor.S
2121```
2222```
2323-module F5 () : S
2323+module F5 () : Functor.S
2424```
+2-2
odoc/test/generators/markdown/Functor2-X.md
···55## Parameters
6677```
88-module Y : S
88+module Y : Functor2.S
99```
1010```
1111-module Z : S
1111+module Z : Functor2.S
1212```
13131414## Signature
···55## Parameters
6677```
88-module Y : S
88+module Y : Functor2.S
99```
1010```
1111-module Z : S
1111+module Z : Functor2.S
1212```
13131414## Signature
+5-2
odoc/test/generators/markdown/Functor2.md
···55module type S = sig ... end
66```
77```
88-module X (Y : S) (Z : S) : sig ... end
88+module X (Y : Functor2.S) (Z : Functor2.S) : sig ... end
99```
1010```
1111-module type XF = functor (Y : S) -> functor (Z : S) -> sig ... end
1111+module type XF =
1212+ functor (Y : Functor2.S) ->
1313+ functor (Z : Functor2.S) ->
1414+ sig ... end
1215```
+1-1
odoc/test/generators/markdown/Functor_ml-Foo'.md
···1111## Signature
12121313```
1414-type t = Bar.t
1414+type t = Functor_ml.Bar.t
1515```
···44The `include Y` below should have the synopsis from `Y`'s top-comment attached to it.
5566```
77-type t = Y.t
77+type t = Include2.Y.t
88```
+8-22
odoc/test/generators/markdown/Labels.md
···1616Attached to type
17171818```
1919-val f : t
1919+val f : Labels.t
2020```
2121Attached to value
22222323```
2424-val e : unit -> t
2424+val e : unit -> Labels.t
2525```
2626Attached to external
2727···4343type x = ..
4444```
4545```
4646-type x +=
4747-```
4848-```
4646+type Labels.x +=
4947| X
5050-```
5151-```
52485349```
5450Attached to extension
55515652```
5757-module S := A
5353+module S := Labels.A
5854```
5955Attached to module subst
60566157```
6262-type s := t
5858+type s := Labels.t
6359```
6460Attached to type subst
65616662```
6767-type u =
6868-```
6969-```
7070-| A'
7171-```
7272-Attached to constructor
7373-7474-```
6363+type u =
6464+| A' (** Attached to constructor *)
75657666```
7767```
7868type v = {
7979-```
8080-`f : t;`
8181-Attached to field
8282-8383-```
6969+ (** Attached to field *)
8470}
8571```
8672Testing that labels can be referenced
···1414type ('a, 'b) w
1515```
1616```
1717-module M = M'
1717+module M = Module.M'
1818```
+8-8
odoc/test/generators/markdown/Module.md
···1515module type S1
1616```
1717```
1818-module type S2 = S
1818+module type S2 = Module.S
1919```
2020```
2121-module type S3 = S with type t = int and type u = string
2121+module type S3 = Module.S with type t = int and type u = string
2222```
2323```
2424-module type S4 = S with type t := int
2424+module type S4 = Module.S with type t := int
2525```
2626```
2727-module type S5 = S with type 'a v := 'a list
2727+module type S5 = Module.S with type 'a v := 'a list
2828```
2929```
3030type ('a, 'b) result
3131```
3232```
3333-module type S6 = S with type ('a, 'b) w := ('a, 'b) result
3333+module type S6 = Module.S with type ('a, 'b) w := ('a, 'b) Module.result
3434```
3535```
3636module M' : sig ... end
3737```
3838```
3939-module type S7 = S with module M = M'
3939+module type S7 = Module.S with module M = Module.M'
4040```
4141```
4242-module type S8 = S with module M := M'
4242+module type S8 = Module.S with module M := Module.M'
4343```
4444```
4545-module type S9 = module type of M'
4545+module type S9 = module type of Module.M'
4646```
4747```
4848module Mutually : sig ... end
···1010module type B = functor (C : sig ... end) -> sig ... end
1111```
1212```
1313-module type D = A
1313+module type D = Module_type_alias.A
1414```
1515```
1616-module type E = functor (F : sig ... end) -> B
1616+module type E = functor (F : sig ... end) -> Module_type_alias.B
1717```
1818```
1919-module type G = functor (H : sig ... end) -> D
1919+module type G = functor (H : sig ... end) -> Module_type_alias.D
2020```
2121```
2222-module type I = B
2222+module type I = Module_type_alias.B
2323```
+1-1
odoc/test/generators/markdown/Module_type_of-T.md
···55module type T = sig ... end
66```
77```
88-module M = X
88+module M = Module_type_of.X
99```
1010```
1111module N : module type of struct include M end
+1-1
odoc/test/generators/markdown/Module_type_of.md
···88module X : sig ... end
99```
1010```
1111-module T : S with module M = X
1111+module T : Module_type_of.S with module M = Module_type_of.X
1212```
···55module type u = sig ... end
66```
77```
88-module type with_ = u with module type T = s
88+module type with_ =
99+ Module_type_subst.Basic.u with module type T = Module_type_subst.s
910```
1011```
1112module type u2 = sig ... end
1213```
1314```
1414-module type with_2 = u2 with module type T = sig ... end
1515+module type with_2 =
1616+ Module_type_subst.Basic.u2 with module type T = sig ... end
1517```
1618```
1719module type a = sig ... end
1820```
1921```
2020-module type c = a with module type b := s
2222+module type c =
2323+ Module_type_subst.Basic.a with module type b := Module_type_subst.s
2124```
···88module type local := sig ... end
99```
1010```
1111-module type w = local
1111+module type w = Module_type_subst.Local.local
1212```
1313```
1414module type s = sig ... end
···55module type nested = sig ... end
66```
77```
88-module type with_ = nested with module type N.t = s
88+module type with_ =
99+ Module_type_subst.Nested.nested with module type N.t = Module_type_subst.s
910```
1011```
1111-module type with_subst = nested with module type N.t := s
1212+module type with_subst =
1313+ Module_type_subst.Nested.nested with module type N.t := Module_type_subst.s
1214```
···55module type u = sig ... end
66```
77```
88-module type w = u with module type a = sig ... end
88+module type w = Module_type_subst.Structural.u with module type a = sig ... end
99```
···2323## Functor
24242525```
2626-module F (Arg1 : Y) (Arg2 : sig ... end) : sig ... end
2626+module F (Arg1 : Nested.Y) (Arg2 : sig ... end) : sig ... end
2727```
2828This is a functor F.
2929
···55type 'a t
66```
77```
88-val id : 'a t -> 'a t
88+val id :
99+ 'a Ocamlary.CanonicalTest.Base.List.t ->
1010+ 'a Ocamlary.CanonicalTest.Base.List.t
911```
···55type 'a t
66```
77```
88-val id : 'a t -> 'a t
88+val id :
99+ 'a Ocamlary.CanonicalTest.Base_Tests.C.t ->
1010+ 'a Ocamlary.CanonicalTest.Base_Tests.C.t
911```
···22# Module `CanonicalTest.Base_Tests`
3344```
55-module C : module type of Base.List
55+module C : module type of Ocamlary.CanonicalTest.Base.List
66```
77```
88-module L = Base.List
88+module L = Ocamlary.CanonicalTest.Base.List
99```
1010```
1111val foo : int L.t -> float L.t
1212```
1313```
1414-val bar : 'a Base.List.t -> 'a Base.List.t
1414+val bar :
1515+ 'a Ocamlary.CanonicalTest.Base.List.t ->
1616+ 'a Ocamlary.CanonicalTest.Base.List.t
1517```
1618```
1717-val baz : 'a Base.List.t -> unit
1919+val baz : 'a Ocamlary.CanonicalTest.Base.List.t -> unit
1820```
···22# Module `CanonicalTest.List_modif`
3344```
55-type 'c t = 'c Base.List.t
55+type 'c t = 'c Ocamlary.CanonicalTest.Base.List.t
66```
77```
88-val id : 'a t -> 'a t
88+val id :
99+ 'a Ocamlary.CanonicalTest.List_modif.t ->
1010+ 'a Ocamlary.CanonicalTest.List_modif.t
911```
···88module Base_Tests : sig ... end
99```
1010```
1111-module List_modif : module type of Base.List with type 'c t = 'c Base.List.t
1111+module List_modif :
1212+ module type of Base.List
1313+ with type 'c t = 'c Ocamlary.CanonicalTest.Base.List.t
1214```
···44This comment is for `InnerModuleA'`.
5566```
77-type t = (unit, unit) a_function
77+type t = (unit, unit) Ocamlary.a_function
88```
99This comment is for `t`.
···44This comment is for `InnerModuleTypeA'`.
5566```
77-type t = InnerModuleA'.t
77+type t = Ocamlary.CollectionModule.InnerModuleA.InnerModuleA'.t
88```
99This comment is for `t`.
···44This comment is for `InnerModuleA`.
5566```
77-type t = collection
77+type t = Ocamlary.CollectionModule.collection
88```
99This comment is for `t`.
1010
···1717This comment is for `InnerModuleA`.
18181919```
2020-module type InnerModuleTypeA = InnerModuleA.InnerModuleTypeA'
2020+module type InnerModuleTypeA =
2121+ Ocamlary.CollectionModule.InnerModuleA.InnerModuleTypeA'
2122```
2223This comment is for `InnerModuleTypeA`.
+1-1
odoc/test/generators/markdown/Ocamlary-Dep1-X.md
···22# Module `Dep1.X`
3344```
55-module Y : S
55+module Y : Ocamlary.Dep1.S
66```
···88module type S = sig ... end
99```
1010```
1111-module X : T
1111+module X : Arg.T
1212```
+1-1
odoc/test/generators/markdown/Ocamlary-Dep5.md
···1111## Signature
12121313```
1414-module Z : Arg.S with module Y = Dep3
1414+module Z : Arg.S with module Y = Ocamlary.Dep3
1515```
+2-2
odoc/test/generators/markdown/Ocamlary-Dep6-X.md
···22# Module `Dep6.X`
3344```
55-module type R = S
55+module type R = Ocamlary.Dep6.S
66```
77```
88-module Y : R
88+module Y : Ocamlary.Dep6.X.R
99```
···44This comment is for `InnerModuleA'`.
5566```
77-type t = (unit, unit) a_function
77+type t = (unit, unit) Ocamlary.a_function
88```
99This comment is for `t`.
···44This comment is for `InnerModuleTypeA'`.
5566```
77-type t = InnerModuleA'.t
77+type t = Collection.InnerModuleA.InnerModuleA'.t
88```
99This comment is for `t`.
···1717This comment is for `InnerModuleA`.
18181919```
2020-module type InnerModuleTypeA = InnerModuleA.InnerModuleTypeA'
2020+module type InnerModuleTypeA = Collection.InnerModuleA.InnerModuleTypeA'
2121```
2222This comment is for `InnerModuleTypeA`.
···77## Parameters
8899```
1010-module Collection : module type of CollectionModule
1010+module Collection : module type of Ocamlary.CollectionModule
1111```
12121313## Signature
···44This comment is for `InnerModuleA'`.
5566```
77-type t = (unit, unit) a_function
77+type t = (unit, unit) Ocamlary.a_function
88```
99This comment is for `t`.
···44This comment is for `InnerModuleTypeA'`.
5566```
77-type t = InnerModuleA'.t
77+type t = InnerModuleA.InnerModuleA'.t
88```
99This comment is for `t`.
···44This comment is for `InnerModuleA'`.
5566```
77-type t = (unit, unit) a_function
77+type t = (unit, unit) Ocamlary.a_function
88```
99This comment is for `t`.
···44This comment is for `InnerModuleTypeA'`.
5566```
77-type t = InnerModuleA'.t
77+type t = C.InnerModuleA.InnerModuleA'.t
88```
99This comment is for `t`.
···1717This comment is for `InnerModuleA`.
18181919```
2020-module type InnerModuleTypeA = InnerModuleA.InnerModuleTypeA'
2020+module type InnerModuleTypeA = C.InnerModuleA.InnerModuleTypeA'
2121```
2222This comment is for `InnerModuleTypeA`.
···44This comment is for `InnerModuleA'`.
5566```
77-type t = (unit, unit) a_function
77+type t = (unit, unit) Ocamlary.a_function
88```
99This comment is for `t`.
···44This comment is for `InnerModuleTypeA'`.
5566```
77-type t = InnerModuleA'.t
77+type t = Q.InnerModuleA.InnerModuleA'.t
88```
99This comment is for `t`.
···1717This comment is for `InnerModuleA`.
18181919```
2020-module type InnerModuleTypeA = InnerModuleA.InnerModuleTypeA'
2020+module type InnerModuleTypeA = Q.InnerModuleA.InnerModuleTypeA'
2121```
2222This comment is for `InnerModuleTypeA`.
···44This comment is for `InnerModuleA'`.
5566```
77-type t = (unit, unit) a_function
77+type t = (unit, unit) Ocamlary.a_function
88```
99This comment is for `t`.
···44This comment is for `InnerModuleTypeA'`.
5566```
77-type t = InnerModuleA'.t
77+type t = Q.InnerModuleA.InnerModuleA'.t
88```
99This comment is for `t`.
···1717This comment is for `InnerModuleA`.
18181919```
2020-module type InnerModuleTypeA = InnerModuleA.InnerModuleTypeA'
2020+module type InnerModuleTypeA = Q.InnerModuleA.InnerModuleTypeA'
2121```
2222This comment is for `InnerModuleTypeA`.
···44This comment is for `InnerModuleA'`.
5566```
77-type t = (unit, unit) a_function
77+type t = (unit, unit) Ocamlary.a_function
88```
99This comment is for `t`.
···44This comment is for `InnerModuleTypeA'`.
5566```
77-type t = InnerModuleA'.t
77+type t = Q.InnerModuleA.InnerModuleA'.t
88```
99This comment is for `t`.
···1717This comment is for `InnerModuleA`.
18181919```
2020-module type InnerModuleTypeA = InnerModuleA.InnerModuleTypeA'
2020+module type InnerModuleTypeA = Q.InnerModuleA.InnerModuleTypeA'
2121```
2222This comment is for `InnerModuleTypeA`.
···44This comment is for `InnerModuleA'`.
5566```
77-type t = (unit, unit) a_function
77+type t = (unit, unit) Ocamlary.a_function
88```
99This comment is for `t`.
···44This comment is for `InnerModuleTypeA'`.
5566```
77-type t = InnerModuleA'.t
77+type t = InnerModuleA.InnerModuleA'.t
88```
99This comment is for `t`.
···44This comment is for `InnerModuleA'`.
5566```
77-type t = (unit, unit) a_function
77+type t = (unit, unit) Ocamlary.a_function
88```
99This comment is for `t`.
···44This comment is for `InnerModuleTypeA'`.
5566```
77-type t = InnerModuleA'.t
77+type t = C.InnerModuleA.InnerModuleA'.t
88```
99This comment is for `t`.
···1717This comment is for `InnerModuleA`.
18181919```
2020-module type InnerModuleTypeA = InnerModuleA.InnerModuleTypeA'
2020+module type InnerModuleTypeA = C.InnerModuleA.InnerModuleTypeA'
2121```
2222This comment is for `InnerModuleTypeA`.
···22# Module type `Ocamlary.RECOLLECTION`
3344```
55-module C = Recollection(CollectionModule)
55+module C = Ocamlary.Recollection(Ocamlary.CollectionModule)
66```
···44This comment is for `InnerModuleA'`.
5566```
77-type t = (unit, unit) a_function
77+type t = (unit, unit) Ocamlary.a_function
88```
99This comment is for `t`.
···44This comment is for `InnerModuleTypeA'`.
5566```
77-type t = InnerModuleA'.t
77+type t = InnerModuleA.InnerModuleA'.t
88```
99This comment is for `t`.
···22# Module type `Ocamlary.RecollectionModule`
3344```
55-type collection = CollectionModule.element list
55+type collection = Ocamlary.CollectionModule.element list
66```
77```
88-type element = CollectionModule.collection
88+type element = Ocamlary.CollectionModule.collection
99```
1010```
1111module InnerModuleA : sig ... end
···22# Module `With8.M`
3344```
55-module type S = With5.S
55+module type S = Ocamlary.With5.S
66```
77```
88-module N : module type of struct include With5.N end with type t = With5.N.t
88+module N :
99+ module type of struct include Ocamlary.With5.N end
1010+ with type t = Ocamlary.With5.N.t
911```
···22# Module type `Ocamlary.With8`
3344```
55-module M : module type of struct include With5 end with type N.t = With5.N.t
55+module M :
66+ module type of struct include Ocamlary.With5 end
77+ with type N.t = Ocamlary.With5.N.t
68```
+102-272
odoc/test/generators/markdown/Ocamlary.md
···8686## Section 9000
87878888```
8989-module EmptyAlias = Empty
8989+module EmptyAlias = Ocamlary.Empty
9090```
9191A plain module alias of `Empty`
9292···9999A plain, empty module signature
100100101101```
102102-module type EmptySigAlias = EmptySig
102102+module type EmptySigAlias = Ocamlary.EmptySig
103103```
104104A plain, empty module signature alias of
105105106106```
107107-module ModuleWithSignature : EmptySig
107107+module ModuleWithSignature : Ocamlary.EmptySig
108108```
109109A plain module of a signature of [`EmptySig`](./Ocamlary-module-type-EmptySig.md) (reference)
110110111111```
112112-module ModuleWithSignatureAlias : EmptySigAlias
112112+module ModuleWithSignatureAlias : Ocamlary.EmptySigAlias
113113```
114114A plain module with an alias signature
115115···179179parameter x the x coordinate
180180returns the y coordinate
181181```
182182-val fun_fun_fun : ((int, int) a_function, (unit, unit) a_function) a_function
182182+val fun_fun_fun :
183183+ ((int, int) Ocamlary.a_function, (unit, unit) Ocamlary.a_function)
184184+ Ocamlary.a_function
183185```
184186```
185187val fun_maybe : ?yes:unit -> unit -> int
···272274This comment is for `CollectionModule`.
273275274276```
275275-module type COLLECTION = module type of CollectionModule
277277+module type COLLECTION = module type of Ocamlary.CollectionModule
276278```
277279module type of
278280279281```
280282module Recollection
281281- (C : COLLECTION) :
282282- COLLECTION
283283+ (C : Ocamlary.COLLECTION) :
284284+ Ocamlary.COLLECTION
283285 with type collection = C.element list
284286 and type element = C.collection
285287```
···289291module type MMM = sig ... end
290292```
291293```
292292-module type RECOLLECTION = MMM with module C = Recollection(CollectionModule)
294294+module type RECOLLECTION =
295295+ Ocamlary.MMM with module C = Ocamlary.Recollection(Ocamlary.CollectionModule)
293296```
294297```
295298module type RecollectionModule = sig ... end
···307310308311```
309312module FunctorTypeOf
310310- (Collection : module type of CollectionModule) :
313313+ (Collection : module type of Ocamlary.CollectionModule) :
311314 sig ... end
312315```
313316This comment is for `FunctorTypeOf`.
···331334332335```
333336type record = {
334334-```
335335-`field1 : int;`
336336-This comment is for `field1`.
337337-338338-`field2 : int;`
339339-This comment is for `field2`.
340340-341341-```
337337+ (** This comment is for field1. *)
338338+ (** This comment is for field2. *)
342339}
343340```
344341This comment is for `record`.
···347344348345```
349346type mutable_record = {
350350-```
351351-`mutable a : int;`
352352-`a` is first and mutable
353353-354354-`b : unit;`
355355-`b` is second and immutable
356356-357357-`mutable c : int;`
358358-`c` is third and mutable
359359-360360-```
347347+ (** a is first and mutable *)
348348+ (** b is second and immutable *)
349349+ (** c is third and mutable *)
361350}
362351```
363352```
364353type universe_record = {
365365-```
366366-`nihilate : 'a. 'a -> unit;`
367367-```
368368-}
369369-```
370370-```
371371-type variant =
372372-```
373373-```
374374-| TagA
375375-```
376376-This comment is for `TagA`.
377354355355+}
378356```
379379-| ConstrB of int
380357```
381381-This comment is for `ConstrB`.
382382-383383-```
384384-| ConstrC of int * int
385385-```
386386-This comment is for binary `ConstrC`.
387387-388388-```
389389-| ConstrD of int * int
390390-```
391391-This comment is for unary `ConstrD` of binary tuple.
392392-393393-```
358358+type variant =
359359+| TagA (** This comment is for TagA. *)
360360+| ConstrB of int (** This comment is for ConstrB. *)
361361+| ConstrC of int * int (** This comment is for binary ConstrC. *)
362362+| ConstrD of int * int (** This comment is for unary ConstrD of binary tuple. *)
394363395364```
396365This comment is for `variant`.
···398367This comment is also for `variant`.
399368400369```
401401-type poly_variant = [
402402-```
403403-```
370370+type poly_variant = [
404371| `TagA
405405-```
406406-```
407372| `ConstrB of int
408408-```
409409-```
410410- ]
373373+]
411374```
412375This comment is for `poly_variant`.
413376414377Wow\! It was a polymorphic variant\!
415378416379```
417417-type (_, _) full_gadt =
418418-```
419419-```
420420-| Tag : (unit, unit) full_gadt
421421-```
422422-```
423423-| First : 'a -> ('a, unit) full_gadt
424424-```
425425-```
426426-| Second : 'a -> (unit, 'a) full_gadt
427427-```
428428-```
429429-| Exist : 'a * 'b -> ('b, unit) full_gadt
430430-```
431431-```
380380+type (_, _) full_gadt =
381381+| Tag : (unit, unit) Ocamlary.full_gadt
382382+| First : 'a -> ('a, unit) Ocamlary.full_gadt
383383+| Second : 'a -> (unit, 'a) Ocamlary.full_gadt
384384+| Exist : 'a * 'b -> ('b, unit) Ocamlary.full_gadt
432385433386```
434387This comment is for `full_gadt`.
···436389Wow\! It was a GADT\!
437390438391```
439439-type 'a partial_gadt =
440440-```
441441-```
442442-| AscribeTag : 'a partial_gadt
443443-```
444444-```
445445-| OfTag of 'a partial_gadt
446446-```
447447-```
448448-| ExistGadtTag : ('a -> 'b) -> 'a partial_gadt
449449-```
450450-```
392392+type 'a partial_gadt =
393393+| AscribeTag : 'a Ocamlary.partial_gadt
394394+| OfTag of 'a Ocamlary.partial_gadt
395395+| ExistGadtTag : ('a -> 'b) -> 'a Ocamlary.partial_gadt
451396452397```
453398This comment is for `partial_gadt`.
···455400Wow\! It was a mixed GADT\!
456401457402```
458458-type alias = variant
403403+type alias = Ocamlary.variant
459404```
460405This comment is for `alias`.
461406462407```
463463-type tuple = (alias * alias) * alias * (alias * alias)
408408+type tuple =
409409+ (Ocamlary.alias * Ocamlary.alias)
410410+ * Ocamlary.alias
411411+ * (Ocamlary.alias * Ocamlary.alias)
464412```
465413This comment is for `tuple`.
466414467415```
468468-type variant_alias = variant =
469469-```
470470-```
416416+type variant_alias = Ocamlary.variant =
471417| TagA
472472-```
473473-```
474418| ConstrB of int
475475-```
476476-```
477419| ConstrC of int * int
478478-```
479479-```
480420| ConstrD of int * int
481481-```
482482-```
483421484422```
485423This comment is for `variant_alias`.
486424487425```
488488-type record_alias = record = {
489489-```
490490-`field1 : int;`
491491-`field2 : int;`
492492-```
426426+type record_alias = Ocamlary.record = {
427427+428428+493429}
494430```
495431This comment is for `record_alias`.
496432497433```
498498-type poly_variant_union = [
499499-```
500500-```
501501-| poly_variant
502502-```
503503-```
434434+type poly_variant_union = [
435435+| Ocamlary.poly_variant
504436| `TagC
505505-```
506506-```
507507- ]
437437+]
508438```
509439This comment is for `poly_variant_union`.
510440511441```
512512-type 'a poly_poly_variant = [
513513-```
514514-```
442442+type 'a poly_poly_variant = [
515443| `TagA of 'a
516516-```
517517-```
518518- ]
519519-```
520520-```
521521-type ('a, 'b) bin_poly_poly_variant = [
444444+]
522445```
523446```
447447+type ('a, 'b) bin_poly_poly_variant = [
524448| `TagA of 'a
525525-```
526526-```
527449| `ConstrB of 'b
528528-```
529529-```
530530- ]
450450+]
531451```
532452```
533453type 'a open_poly_variant = [> `TagA ] as 'a
···536456type 'a open_poly_variant2 = [> `ConstrB of int ] as 'a
537457```
538458```
539539-type 'a open_poly_variant_alias = 'a open_poly_variant open_poly_variant2
459459+type 'a open_poly_variant_alias =
460460+ 'a Ocamlary.open_poly_variant Ocamlary.open_poly_variant2
540461```
541462```
542463type 'a poly_fun = ([> `ConstrB of int ] as 'a) -> 'a
···551472type 'a clopen_poly_variant = [< `One | `Two of int | `Three Two Three ] as 'a
552473```
553474```
554554-type nested_poly_variant = [
555555-```
556556-```
475475+type nested_poly_variant = [
557476| `A
558558-```
559559-```
560477| `B of [ `B1 | `B2 ]
561561-```
562562-```
563478| `C
564564-```
565565-```
566479| `D of [ `D1 of [ `D1a ] ]
567567-```
568568-```
569569- ]
570570-```
571571-```
572572-type ('a, 'b) full_gadt_alias = ('a, 'b) full_gadt =
573573-```
574574-```
575575-| Tag : (unit, unit) full_gadt_alias
480480+]
576481```
577482```
578578-| First : 'a -> ('a, unit) full_gadt_alias
579579-```
580580-```
581581-| Second : 'a -> (unit, 'a) full_gadt_alias
582582-```
583583-```
584584-| Exist : 'a * 'b -> ('b, unit) full_gadt_alias
585585-```
586586-```
483483+type ('a, 'b) full_gadt_alias = ('a, 'b) Ocamlary.full_gadt =
484484+| Tag : (unit, unit) Ocamlary.full_gadt_alias
485485+| First : 'a -> ('a, unit) Ocamlary.full_gadt_alias
486486+| Second : 'a -> (unit, 'a) Ocamlary.full_gadt_alias
487487+| Exist : 'a * 'b -> ('b, unit) Ocamlary.full_gadt_alias
587488588489```
589490This comment is for `full_gadt_alias`.
590491591492```
592592-type 'a partial_gadt_alias = 'a partial_gadt =
593593-```
594594-```
595595-| AscribeTag : 'a partial_gadt_alias
596596-```
597597-```
598598-| OfTag of 'a partial_gadt_alias
599599-```
600600-```
601601-| ExistGadtTag : ('a -> 'b) -> 'a partial_gadt_alias
602602-```
603603-```
493493+type 'a partial_gadt_alias = 'a Ocamlary.partial_gadt =
494494+| AscribeTag : 'a Ocamlary.partial_gadt_alias
495495+| OfTag of 'a Ocamlary.partial_gadt_alias
496496+| ExistGadtTag : ('a -> 'b) -> 'a Ocamlary.partial_gadt_alias
604497605498```
606499This comment is for `partial_gadt_alias`.
···611504This comment is for [`Exn_arrow`](./#exception-Exn_arrow).
612505613506```
614614-type mutual_constr_a =
615615-```
616616-```
507507+type mutual_constr_a =
617508| A
618618-```
619619-```
620620-| B_ish of mutual_constr_b
621621-```
622622-This comment is between [`mutual_constr_a`](./#type-mutual_constr_a) and [`mutual_constr_b`](./#type-mutual_constr_b).
623623-624624-```
509509+| B_ish of Ocamlary.mutual_constr_b (** This comment is between mutual_constr_a and mutual_constr_b. *)
625510626511```
627512This comment is for [`mutual_constr_a`](./#type-mutual_constr_a) then [`mutual_constr_b`](./#type-mutual_constr_b).
628513629514```
630630-and mutual_constr_b =
631631-```
632632-```
515515+and mutual_constr_b =
633516| B
634634-```
635635-```
636636-| A_ish of mutual_constr_a
637637-```
638638-This comment must be here for the next to associate correctly.
639639-640640-```
517517+| A_ish of Ocamlary.mutual_constr_a (** This comment must be here for the next to associate correctly. *)
641518642519```
643520This comment is for [`mutual_constr_b`](./#type-mutual_constr_b) then [`mutual_constr_a`](./#type-mutual_constr_a).
644521645522```
646646-type rec_obj = < f : int ; g : unit -> unit ; h : rec_obj >
523523+type rec_obj = < f : int ; g : unit -> unit ; h : Ocamlary.rec_obj >
647524```
648525```
649526type 'a open_obj = < f : int ; g : unit -> unit.. > as 'a
···666543A mystery wrapped in an ellipsis
667544668545```
669669-type ext +=
670670-```
671671-```
546546+type Ocamlary.ext +=
672547| ExtA
673673-```
674674-```
675548676549```
677550```
678678-type ext +=
679679-```
680680-```
551551+type Ocamlary.ext +=
681552| ExtB
682682-```
683683-```
684553685554```
686555```
687687-type ext +=
688688-```
689689-```
556556+type Ocamlary.ext +=
690557| ExtC of unit
691691-```
692692-```
693693-| ExtD of ext
694694-```
695695-```
558558+| ExtD of Ocamlary.ext
696559697560```
698561```
699699-type ext +=
700700-```
701701-```
562562+type Ocamlary.ext +=
702563| ExtE
703703-```
704704-```
705564706565```
707566```
708708-type ext += private
709709-```
710710-```
567567+type Ocamlary.ext += private
711568| ExtF
712712-```
713713-```
714569715570```
716571```
···719574'a poly\_ext
720575721576```
722722-type poly_ext +=
723723-```
724724-```
577577+type Ocamlary.poly_ext +=
725578| Foo of 'b
726726-```
727727-```
728728-| Bar of 'b * 'b
729729-```
730730-'b poly\_ext
579579+| Bar of 'b * 'b (** 'b poly_ext *)
731580732581```
733733-734582```
735735-```
736736-type poly_ext +=
737737-```
738738-```
739739-| Quux of 'c
740740-```
741741-'c poly\_ext
742742-743743-```
583583+type Ocamlary.poly_ext +=
584584+| Quux of 'c (** 'c poly_ext *)
744585745586```
746587```
747588module ExtMod : sig ... end
748589```
749590```
750750-type ExtMod.t +=
751751-```
752752-```
753753-| ZzzTop0
754754-```
755755-It's got the rock
591591+type Ocamlary.ExtMod.t +=
592592+| ZzzTop0 (** It's got the rock *)
756593757594```
758758-759595```
760760-```
761761-type ExtMod.t +=
762762-```
763763-```
764764-| ZzzTop of unit
765765-```
766766-and it packs a unit.
767767-768768-```
596596+type Ocamlary.ExtMod.t +=
597597+| ZzzTop of unit (** and it packs a unit. *)
769598770599```
771600```
···774603Rotate keys on my mark...
775604776605```
777777-type my_mod = (module COLLECTION)
606606+type my_mod = (module Ocamlary.COLLECTION)
778607```
779608A brown paper package tied up with string
780609···815644module Dep5 (Arg : sig ... end) : sig ... end
816645```
817646```
818818-type dep2 = Dep5(Dep4).Z.X.b
647647+type dep2 = Ocamlary.Dep5(Ocamlary.Dep4).Z.X.b
819648```
820649```
821650type dep3 = Dep5(Dep4).Z.Y.a
···827656module Dep7 (Arg : sig ... end) : sig ... end
828657```
829658```
830830-type dep4 = Dep7(Dep6).M.Y.d
659659+type dep4 = Ocamlary.Dep7(Ocamlary.Dep6).M.Y.d
831660```
832661```
833662module Dep8 : sig ... end
···836665module Dep9 (X : sig ... end) : sig ... end
837666```
838667```
839839-module type Dep10 = Dep9(Dep8).T with type t = int
668668+module type Dep10 = Ocamlary.Dep9(Ocamlary.Dep8).T with type t = int
840669```
841670```
842671module Dep11 : sig ... end
···845674module Dep12 (Arg : sig ... end) : sig ... end
846675```
847676```
848848-module Dep13 : Dep12(Dep11).T
677677+module Dep13 : Ocamlary.Dep12(Ocamlary.Dep11).T
849678```
850679```
851851-type dep5 = Dep13.c
680680+type dep5 = Ocamlary.Dep13.c
852681```
853682```
854683module type With1 = sig ... end
···857686module With2 : sig ... end
858687```
859688```
860860-module With3 : With1 with module M = With2
689689+module With3 : Ocamlary.With1 with module M = Ocamlary.With2
861690```
862691```
863863-type with1 = With3.N.t
692692+type with1 = Ocamlary.With3.N.t
864693```
865694```
866866-module With4 : With1 with module M := With2
695695+module With4 : Ocamlary.With1 with module M := Ocamlary.With2
867696```
868697```
869869-type with2 = With4.N.t
698698+type with2 = Ocamlary.With4.N.t
870699```
871700```
872701module With5 : sig ... end
···879708```
880709```
881710module type With8 =
882882- With7(With6).T with module M = With5 and type M.N.t = With5.N.t
711711+ Ocamlary.With7(Ocamlary.With6).T
712712+ with module M = Ocamlary.With5
713713+ and type M.N.t = Ocamlary.With5.N.t
883714```
884715```
885716module With9 : sig ... end
···888719module With10 : sig ... end
889720```
890721```
891891-module type With11 = With7(With10).T with module M = With9 and type N.t = int
722722+module type With11 =
723723+ Ocamlary.With7(Ocamlary.With10).T
724724+ with module M = Ocamlary.With9
725725+ and type N.t = int
892726```
893727```
894728module type NestedInclude1 = sig ... end
···995829type new_t = ..
996830```
997831```
998998-type new_t +=
999999-```
10001000-```
832832+type Ocamlary.new_t +=
1001833| C
10021002-```
10031003-```
10048341005835```
1006836```
10071007-module type TypeExtPruned = TypeExt with type t := new_t
837837+module type TypeExtPruned = Ocamlary.TypeExt with type t := Ocamlary.new_t
1008838```
1009839```
1010840module Op : sig ... end
+8
odoc/test/generators/markdown/Recent-X.md
···22# Module `Recent.X`
3344```
55+<<<<<<< HEAD
56module L := Z.Y
77+=======
88+module L := Recent.Z.Y
99+>>>>>>> baf34b7f4 (Add markdown to generator tests)
610```
711```
812type t = int L.X.t
···1115type u := int
1216```
1317```
1818+<<<<<<< HEAD
1419type v = u L.X.t
2020+=======
2121+type v = Recent.X.u L.X.t
2222+>>>>>>> baf34b7f4 (Add markdown to generator tests)
1523```
···55## Parameters
6677```
88+<<<<<<< HEAD
89module _ : S
1010+=======
1111+module _ : Recent.S
1212+>>>>>>> baf34b7f4 (Add markdown to generator tests)
913```
10141115## Signature
+45
odoc/test/generators/markdown/Recent.md
···55module type S = sig ... end
66```
77```
88+<<<<<<< HEAD
89module type S1 = functor (_ : S) -> S
910```
1011```
···78797980```
8081 ]
8282+=======
8383+module type S1 = functor (_ : Recent.S) -> Recent.S
8484+```
8585+```
8686+type variant =
8787+| A
8888+| B of int
8989+| C (** foo *)
9090+| D (** bar *)
9191+| E of {
9292+a : int;
9393+}
9494+9595+```
9696+```
9797+type _ gadt =
9898+| A : int Recent.gadt
9999+| B : int -> string Recent.gadt (** foo *)
100100+| C : {
101101+a : int;
102102+} -> unit Recent.gadt
103103+104104+```
105105+```
106106+type polymorphic_variant = [
107107+| `A
108108+| `B of int
109109+| `C (** foo *)
110110+| `D (** bar *)
111111+]
112112+>>>>>>> baf34b7f4 (Add markdown to generator tests)
81113```
82114```
83115type empty_variant = |
···86118type nonrec nonrec_ = int
87119```
88120```
121121+<<<<<<< HEAD
89122type empty_conj =
90123```
91124```
···101134| X : [< `X of int & [< `B of int & float ] ] -> conj
102135```
103136```
137137+=======
138138+type empty_conj =
139139+| X : [< `X of & 'a & int * float ] -> Recent.empty_conj
140140+141141+```
142142+```
143143+type conj =
144144+| X : [< `X of int & [< `B of int & float ] ] -> Recent.conj
145145+>>>>>>> baf34b7f4 (Add markdown to generator tests)
104146105147```
106148```
···117159```
118160```
119161module type PolyS = sig ... end
162162+<<<<<<< HEAD
120163```
121164```
122165type +-'a phantom
123166```
124167```
125168val f : (x:int * y:int) phantom -> unit
169169+=======
170170+>>>>>>> baf34b7f4 (Add markdown to generator tests)
126171```
+1-5
odoc/test/generators/markdown/Recent_impl-B.md
···22# Module `Recent_impl.B`
3344```
55-type t =
66-```
77-```
55+type t =
86| B
99-```
1010-```
117128```
···4444Doc of `M''`, part 1\.
45454646```
4747-module Alias : T
4747+module Alias : Toplevel_comments.T
4848```
4949Doc of `Alias`.
5050
+46-130
odoc/test/generators/markdown/Type.md
···4343type nested_pair = (int * int) * int
4444```
4545```
4646-type instance = int constructor
4646+type instance = int Type.constructor
4747```
4848```
4949type long =
5050- labeled_higher_order ->
5151- [ `Bar | `Baz of triple ] ->
5252- pair ->
5353- labeled ->
5454- higher_order ->
5050+ Type.labeled_higher_order ->
5151+ [ `Bar | `Baz of Type.triple ] ->
5252+ Type.pair ->
5353+ Type.labeled ->
5454+ Type.higher_order ->
5555 (string -> int) ->
5656 (int * float * char * string * char * unit) option ->
5757- nested_pair ->
5858- arrow ->
5757+ Type.nested_pair ->
5858+ Type.arrow ->
5959 string ->
6060- nested_pair array
6060+ Type.nested_pair array
6161```
6262```
6363type variant_e = {
6464-```
6565-`a : int;`
6666-```
6464+6765}
6866```
6967```
7070-type variant =
7171-```
7272-```
6868+type variant =
7369| A
7474-```
7575-```
7670| B of int
7777-```
7878-```
7979-| C
8080-```
8181-foo
8282-8383-```
8484-| D
8585-```
8686-*bar*
8787-8888-```
8989-| E of variant_e
9090-```
9191-```
7171+| C (** foo *)
7272+| D (** bar *)
7373+| E of Type.variant_e
92749375```
9476```
9577type variant_c = {
9696-```
9797-`a : int;`
9898-```
7878+9979}
10080```
10181```
102102-type _ gadt =
103103-```
104104-```
105105-| A : int gadt
106106-```
107107-```
108108-| B : int -> string gadt
109109-```
110110-```
111111-| C : variant_c -> unit gadt
112112-```
113113-```
8282+type _ gadt =
8383+| A : int Type.gadt
8484+| B : int -> string Type.gadt
8585+| C : Type.variant_c -> unit Type.gadt
1148611587```
11688```
117117-type degenerate_gadt =
118118-```
119119-```
120120-| A : degenerate_gadt
121121-```
122122-```
8989+type degenerate_gadt =
9090+| A : Type.degenerate_gadt
1239112492```
12593```
126126-type private_variant = private
127127-```
128128-```
9494+type private_variant = private
12995| A
130130-```
131131-```
1329613397```
13498```
13599type record = {
136136-```
137137-`a : int;`
138138-`mutable b : int;`
139139-`c : int;`
140140-foo
141100142142-`d : int;`
143143-*bar*
144101145145-`e : 'a. 'a;`
146146-```
102102+ (** foo *)
103103+ (** bar *)
104104+147105}
148106```
149107```
150150-type polymorphic_variant = [
151151-```
152152-```
108108+type polymorphic_variant = [
153109| `A
154154-```
155155-```
156110| `B of int
157157-```
158158-```
159111| `C of int * unit
160160-```
161161-```
162112| `D
163163-```
164164-```
165165- ]
166166-```
167167-```
168168-type polymorphic_variant_extension = [
169169-```
170170-```
171171-| polymorphic_variant
113113+]
172114```
173115```
116116+type polymorphic_variant_extension = [
117117+| Type.polymorphic_variant
174118| `E
175175-```
176176-```
177177- ]
178178-```
179179-```
180180-type nested_polymorphic_variant = [
119119+]
181120```
182121```
122122+type nested_polymorphic_variant = [
183123| `A of [ `B | `C ]
184184-```
185185-```
186186- ]
187187-```
188188-```
189189-type private_extenion = private [>
190190-```
191191-```
192192-| polymorphic_variant
124124+]
193125```
194126```
195195- ]
127127+type private_extenion = private [>
128128+| Type.polymorphic_variant
129129+]
196130```
197131```
198132type object_ = < a : int ; b : int ; c : int >
···201135module type X = sig ... end
202136```
203137```
204204-type module_ = (module X)
138138+type module_ = (module Type.X)
205139```
206140```
207207-type module_substitution = (module X with type t = int and type u = unit)
141141+type module_substitution = (module Type.X with type t = int and type u = unit)
208142```
209143```
210144type +'a covariant
···219153type ('a, 'b) binary
220154```
221155```
222222-type using_binary = (int, int) binary
156156+type using_binary = (int, int) Type.binary
223157```
224158```
225159type 'custom name
···240174type 'a upper_variant = 'a constraint 'a = [< `A | `B of int ]
241175```
242176```
243243-type 'a named_variant = 'a constraint 'a = [< polymorphic_variant ]
177177+type 'a named_variant = 'a constraint 'a = [< Type.polymorphic_variant ]
244178```
245179```
246180type 'a exact_object = 'a constraint 'a = < a : int ; b : int >
···261195type extensible = ..
262196```
263197```
264264-type extensible +=
265265-```
266266-```
267267-| Extension
268268-```
269269-Documentation for [`Extension`](./#extension-Extension).
270270-271271-```
272272-| Another_extension
273273-```
274274-Documentation for [`Another_extension`](./#extension-Another_extension).
275275-276276-```
198198+type Type.extensible +=
199199+| Extension (** Documentation for Extension. *)
200200+| Another_extension (** Documentation for Another_extension. *)
277201278202```
279203```
280280-type mutually =
281281-```
282282-```
283283-| A of recursive
284284-```
285285-```
204204+type mutually =
205205+| A of Type.recursive
286206287207```
288208```
289289-and recursive =
290290-```
291291-```
292292-| B of mutually
293293-```
294294-```
209209+and recursive =
210210+| B of Type.mutually
295211296212```
297213```
+3-3
odoc/test/integration/markdown.t/run.t
···4646 ### Section 2
47474848 ```
4949- val v : t
4949+ val v : Test.t
5050 ```
5151 A very important value
5252···8484 type 'a t = 'a list
8585 ```
8686 ```
8787- val head : 'a t -> 'a option
8787+ val head : 'a Test.List.t -> 'a option
8888 ```
8989 ```
9090- val headExn : 'a t -> 'a
9090+ val headExn : 'a Test.List.t -> 'a
9191 ```
92929393 $ cat markdown/test/page.md
+85
odoc/test/markdown/adt_constructors.t/colors.mli
···11+(** A module demonstrating ADT with many constructors for markdown output testing. *)
22+33+(** A color type with many variants representing different colors and color properties. *)
44+type color =
55+ | Red (** Primary red color *)
66+ | Green (** Primary green color *)
77+ | Blue (** Primary blue color *)
88+ | Yellow (** Yellow color (red + green) *)
99+ | Cyan (** Cyan color (green + blue) *)
1010+ | Magenta (** Magenta color (red + blue) *)
1111+ | Orange (** Orange color *)
1212+ | Purple (** Purple color *)
1313+ | Pink (** Pink color *)
1414+ | Brown (** Brown color *)
1515+ | Black (** Black color (absence of light) *)
1616+ | White (** White color (all colors combined) *)
1717+ | Gray (** Gray color *)
1818+ | Silver (** Silver color *)
1919+ | Gold (** Gold color *)
2020+ | Maroon (** Dark red color *)
2121+ | Navy (** Dark blue color *)
2222+ | Teal (** Dark cyan color *)
2323+ | Lime (** Bright green color *)
2424+ | Olive (** Dark yellow-green color *)
2525+ | Aqua (** Light blue-green color *)
2626+ | Fuchsia (** Bright pink-purple color *)
2727+ | Indigo (** Deep blue-purple color *)
2828+ | Violet (** Blue-purple color *)
2929+ | Turquoise (** Blue-green color *)
3030+ | Coral (** Orange-pink color *)
3131+ | Salmon (** Light orange-pink color *)
3232+ | Crimson (** Deep red color *)
3333+ | Scarlet (** Bright red color *)
3434+ | Azure (** Light blue color *)
3535+ | Beige (** Light brown color *)
3636+ | Khaki (** Light brown-green color *)
3737+ | Lavender (** Light purple color *)
3838+ | Mint (** Light green color *)
3939+ | Peach (** Light orange color *)
4040+ | Plum (** Dark purple color *)
4141+ | Rust (** Orange-red color *)
4242+ | Tan (** Light brown color *)
4343+ | Ivory (** Off-white color *)
4444+ | Pearl (** Lustrous white color *)
4545+ | RGB of int * int * int (** RGB color with red, green, blue values (0-255) *)
4646+ | RGBA of int * int * int * float (** RGBA color with alpha transparency (0.0-1.0) *)
4747+ | HSL of int * int * int (** HSL color with hue (0-360), saturation, lightness (0-100) *)
4848+ | HSV of int * int * int (** HSV color with hue (0-360), saturation, value (0-100) *)
4949+ | CMYK of int * int * int * int (** CMYK color for printing (0-100 each) *)
5050+ | Hex of string (** Hexadecimal color representation (e.g., "#FF0000") *)
5151+ | Named of string (** Named color (e.g., "forestgreen", "dodgerblue") *)
5252+ | Gradient of color * color (** Gradient between two colors *)
5353+ | Pattern of color list (** Pattern of multiple colors *)
5454+ | Custom of string * (int * int * int) (** Custom color with name and RGB values *)
5555+5656+(** Brightness levels for colors. *)
5757+type brightness =
5858+ | VeryDark (** Very dark variant *)
5959+ | Dark (** Dark variant *)
6060+ | Normal (** Normal brightness *)
6161+ | Light (** Light variant *)
6262+ | VeryLight (** Very light variant *)
6363+6464+(** Color temperature classification. *)
6565+type temperature =
6666+ | VeryWarm (** Very warm colors (reds, oranges) *)
6767+ | Warm (** Warm colors *)
6868+ | Neutral (** Neutral temperature *)
6969+ | Cool (** Cool colors *)
7070+ | VeryCool (** Very cool colors (blues, purples) *)
7171+7272+(** A function to get the default RGB values for a color. *)
7373+val to_rgb : color -> int * int * int
7474+7575+(** Convert a color to its brightness classification. *)
7676+val get_brightness : color -> brightness
7777+7878+(** Get the temperature classification of a color. *)
7979+val get_temperature : color -> temperature
8080+8181+(** Mix two colors together. *)
8282+val mix_colors : color -> color -> color
8383+8484+(** Create a complementary color. *)
8585+val complement : color -> color
+118
odoc/test/markdown/adt_constructors.t/run.t
···11+Test the markdown output for a module with an ADT containing many constructors.
22+This test verifies that the markdown generator properly handles large ADTs with
33+various constructor types including simple variants, variants with parameters,
44+and proper documentation rendering.
55+66+ $ ocamlc -c -bin-annot colors.mli
77+ $ odoc compile --package colors colors.cmti
88+ $ odoc link colors.odoc
99+ $ odoc markdown-generate colors.odocl -o markdown
1010+1111+ $ cat markdown/colors/Colors.md
1212+1313+ # Module `Colors`
1414+1515+ A module demonstrating ADT with many constructors for markdown output testing.
1616+1717+ ```
1818+ type color =
1919+ | Red (** Primary red color *)
2020+ | Green (** Primary green color *)
2121+ | Blue (** Primary blue color *)
2222+ | Yellow (** Yellow color (red + green) *)
2323+ | Cyan (** Cyan color (green + blue) *)
2424+ | Magenta (** Magenta color (red + blue) *)
2525+ | Orange (** Orange color *)
2626+ | Purple (** Purple color *)
2727+ | Pink (** Pink color *)
2828+ | Brown (** Brown color *)
2929+ | Black (** Black color (absence of light) *)
3030+ | White (** White color (all colors combined) *)
3131+ | Gray (** Gray color *)
3232+ | Silver (** Silver color *)
3333+ | Gold (** Gold color *)
3434+ | Maroon (** Dark red color *)
3535+ | Navy (** Dark blue color *)
3636+ | Teal (** Dark cyan color *)
3737+ | Lime (** Bright green color *)
3838+ | Olive (** Dark yellow-green color *)
3939+ | Aqua (** Light blue-green color *)
4040+ | Fuchsia (** Bright pink-purple color *)
4141+ | Indigo (** Deep blue-purple color *)
4242+ | Violet (** Blue-purple color *)
4343+ | Turquoise (** Blue-green color *)
4444+ | Coral (** Orange-pink color *)
4545+ | Salmon (** Light orange-pink color *)
4646+ | Crimson (** Deep red color *)
4747+ | Scarlet (** Bright red color *)
4848+ | Azure (** Light blue color *)
4949+ | Beige (** Light brown color *)
5050+ | Khaki (** Light brown-green color *)
5151+ | Lavender (** Light purple color *)
5252+ | Mint (** Light green color *)
5353+ | Peach (** Light orange color *)
5454+ | Plum (** Dark purple color *)
5555+ | Rust (** Orange-red color *)
5656+ | Tan (** Light brown color *)
5757+ | Ivory (** Off-white color *)
5858+ | Pearl (** Lustrous white color *)
5959+ | RGB of int * int * int (** RGB color with red, green, blue values (0-255) *)
6060+ | RGBA of int * int * int * float (** RGBA color with alpha transparency (0.0-1.0) *)
6161+ | HSL of int * int * int (** HSL color with hue (0-360), saturation, lightness (0-100) *)
6262+ | HSV of int * int * int (** HSV color with hue (0-360), saturation, value (0-100) *)
6363+ | CMYK of int * int * int * int (** CMYK color for printing (0-100 each) *)
6464+ | Hex of string (** Hexadecimal color representation (e.g., "#FF0000") *)
6565+ | Named of string (** Named color (e.g., "forestgreen", "dodgerblue") *)
6666+ | Gradient of Colors.color * Colors.color (** Gradient between two colors *)
6767+ | Pattern of Colors.color list (** Pattern of multiple colors *)
6868+ | Custom of string * int * int * int (** Custom color with name and RGB values *)
6969+7070+ ```
7171+ A color type with many variants representing different colors and color properties.
7272+7373+ ```
7474+ type brightness =
7575+ | VeryDark (** Very dark variant *)
7676+ | Dark (** Dark variant *)
7777+ | Normal (** Normal brightness *)
7878+ | Light (** Light variant *)
7979+ | VeryLight (** Very light variant *)
8080+8181+ ```
8282+ Brightness levels for colors.
8383+8484+ ```
8585+ type temperature =
8686+ | VeryWarm (** Very warm colors (reds, oranges) *)
8787+ | Warm (** Warm colors *)
8888+ | Neutral (** Neutral temperature *)
8989+ | Cool (** Cool colors *)
9090+ | VeryCool (** Very cool colors (blues, purples) *)
9191+9292+ ```
9393+ Color temperature classification.
9494+9595+ ```
9696+ val to_rgb : Colors.color -> int * int * int
9797+ ```
9898+ A function to get the default RGB values for a color.
9999+100100+ ```
101101+ val get_brightness : Colors.color -> Colors.brightness
102102+ ```
103103+ Convert a color to its brightness classification.
104104+105105+ ```
106106+ val get_temperature : Colors.color -> Colors.temperature
107107+ ```
108108+ Get the temperature classification of a color.
109109+110110+ ```
111111+ val mix_colors : Colors.color -> Colors.color -> Colors.color
112112+ ```
113113+ Mix two colors together.
114114+115115+ ```
116116+ val complement : Colors.color -> Colors.color
117117+ ```
118118+ Create a complementary color.
···11+(** Base module with some types and functions *)
22+33+type t = int
44+(** A simple type *)
55+66+val value : t
77+(** A value of type t *)
88+99+val function_in_base : t -> t
1010+(** A function in the base module *)
+11
odoc/test/markdown/include_test.t/main.mli
···11+(** Main module that includes Base *)
22+33+type base_t = int
44+val base_value : base_t
55+val base_function : base_t -> base_t
66+77+include module type of Base
88+(** This includes all definitions from Base module *)
99+1010+val additional_function : base_t -> base_t
1111+(** An additional function in the main module *)
+40
odoc/test/markdown/include_test.t/run.t
···11+Test module includes in markdown output.
22+33+ $ ocamlc -c -bin-annot base.mli
44+ $ ocamlc -c -bin-annot main.mli
55+ $ odoc compile --package test base.cmti
66+ $ odoc compile --package test main.cmti
77+ $ odoc link base.odoc
88+ $ odoc link main.odoc
99+ $ odoc markdown-generate main.odocl -o markdown
1010+1111+ $ cat markdown/test/Main.md
1212+1313+ # Module `Main`
1414+1515+ Main module that includes Base
1616+1717+ ```
1818+ type base_t = int
1919+ ```
2020+ ```
2121+ val base_value : Main.base_t
2222+ ```
2323+ ```
2424+ val base_function : Main.base_t -> Main.base_t
2525+ ```
2626+ This includes all definitions from Base module
2727+2828+ ```
2929+ type t = int
3030+ ```
3131+ ```
3232+ val value : Main.t
3333+ ```
3434+ ```
3535+ val function_in_base : Main.t -> Main.t
3636+ ```
3737+ ```
3838+ val additional_function : Main.base_t -> Main.base_t
3939+ ```
4040+ An additional function in the main module
···11+(** A module demonstrating polymorphic variants for markdown output testing. *)
22+33+(** A polymorphic variant type with many constructors. *)
44+type color = [
55+ | `Red (** Primary red color *)
66+ | `Green (** Primary green color *)
77+ | `Blue (** Primary blue color *)
88+ | `Yellow (** Yellow color *)
99+ | `Orange (** Orange color *)
1010+ | `Purple (** Purple color *)
1111+ | `RGB of int * int * int (** RGB values *)
1212+ | `Named of string (** Named color *)
1313+]
1414+1515+(** Simple fixed polymorphic variant. *)
1616+type status = [ `Active | `Inactive of string ]
1717+1818+(** Another simple polymorphic variant. *)
1919+type simple = [ `A | `B | `C ]
+43
odoc/test/markdown/polymorphic_variants.t/run.t
···11+Test polymorphic variant formatting in markdown output.
22+33+ $ ocamlc -c -bin-annot polymorphic_variants.mli
44+ $ odoc compile --package test polymorphic_variants.cmti
55+ $ odoc link polymorphic_variants.odoc
66+ $ odoc markdown-generate polymorphic_variants.odocl -o markdown
77+88+ $ cat markdown/test/Polymorphic_variants.md
99+1010+ # Module `Polymorphic_variants`
1111+1212+ A module demonstrating polymorphic variants for markdown output testing.
1313+1414+ ```
1515+ type color = [
1616+ | `Red (** Primary red color *)
1717+ | `Green (** Primary green color *)
1818+ | `Blue (** Primary blue color *)
1919+ | `Yellow (** Yellow color *)
2020+ | `Orange (** Orange color *)
2121+ | `Purple (** Purple color *)
2222+ | `RGB of int * int * int (** RGB values *)
2323+ | `Named of string (** Named color *)
2424+ ]
2525+ ```
2626+ A polymorphic variant type with many constructors.
2727+2828+ ```
2929+ type status = [
3030+ | `Active
3131+ | `Inactive of string
3232+ ]
3333+ ```
3434+ Simple fixed polymorphic variant.
3535+3636+ ```
3737+ type simple = [
3838+ | `A
3939+ | `B
4040+ | `C
4141+ ]
4242+ ```
4343+ Another simple polymorphic variant.