The OCaml system release 4.06: Documentation and user's manual

Report English OPEN
Leroy , Xavier; Doligez , Damien; Frisch , Alain; Garrigue , Jacques; Rémy , Didier; Vouillon , Jérôme;
(2017)
  • Publisher: HAL CCSD
  • Subject: [ INFO.INFO-PL ] Computer Science [cs]/Programming Languages [cs.PL]
    acm: Software_PROGRAMMINGLANGUAGES | TheoryofComputation_LOGICSANDMEANINGSOFPROGRAMS | Software_PROGRAMMINGTECHNIQUES | ComputingMethodologies_SYMBOLICANDALGEBRAICMANIPULATION

This manual documents the release 4.06 of the OCaml system. It is organized as follows. Part I, "An introduction to OCaml", gives an overview of the language. Part II, "The OCaml language", is the reference description of the language. Part III, "The OCaml tools", docum... View more
  • References (18)
    18 references, page 1 of 2

    1 The core language 13 1.1 Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.2 Data types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 1.3 Functions as values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 1.4 Records and variants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 1.5 Imperative features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 1.6 Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 1.7 Symbolic processing of expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 1.8 Pretty-printing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 1.9 Standalone OCaml programs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

    2 The module system 27 2.1 Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 2.2 Signatures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 2.3 Functors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 2.4 Functors and type abstraction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 2.5 Modules and separate compilation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

    5 Polymorphism and its limitations 77 5.1 Weak polymorphism and mutation . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 5.2 Polymorphic recursion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 5.3 Higher-rank polymorphic functions . . . . . . . . . . . . . . . . . . . . . . . . . . . 85

    6 Advanced examples with classes and modules 87 6.1 Extended example: bank accounts . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 6.2 Simple modules as classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 6.3 The subject/observer pattern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98

    10 The toplevel system or REPL (ocaml) 213 10.1 Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214 10.2 Toplevel directives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221 10.3 The toplevel and the module system . . . . . . . . . . . . . . . . . . . . . . . . . . 223 10.4 Common errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224 10.5 Building custom toplevel systems: ocamlmktop . . . . . . . . . . . . . . . . . . . . . 224 10.6 The native toplevel: ocamlnat (experimental) . . . . . . . . . . . . . . . . . . . . . 225

    11 The runtime system (ocamlrun) 227 11.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227 11.2 Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228 11.3 Dynamic loading of shared libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . 230 11.4 Common errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231

    15 The documentation generator (ocamldoc) 265 15.1 Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265 15.2 Syntax of documentation comments . . . . . . . . . . . . . . . . . . . . . . . . . . . 272 15.3 Custom generators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282 15.4 Adding command line options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285

    16 The debugger (ocamldebug) 287 16.1 Compiling for debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287 16.2 Invocation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287 16.3 Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288 16.4 Executing a program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289 16.5 Breakpoints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292 16.6 The call stack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292 16.7 Examining variable values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293 16.8 Controlling the debugger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294 16.9 Miscellaneous commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297 16.10 Running the debugger under Emacs . . . . . . . . . . . . . . . . . . . . . . . . . . . 297

    17 Pro ling (ocamlprof) 299 17.1 Compiling for pro ling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299 17.2 Pro ling an execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 17.3 Printing pro ling information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 17.4 Time pro ling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301 19.8 Advanced example with callbacks . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332 19.9 Advanced topic: custom blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334 19.10 Advanced topic: cheaper C call . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338 19.11 Advanced topic: multithreading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340 19.12 Advanced topic: interfacing with Windows Unicode APIs . . . . . . . . . . . . . . . 342 19.13 Building mixed C/OCaml libraries: ocamlmklib . . . . . . . . . . . . . . . . . . . . 344

    21 Fuzzing with a -fuzz 373 21.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373 21.2 Generating instrumentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373 21.3 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373

  • Metrics
    No metrics available
Share - Bookmark