Explore the comprehensive OCaml system through this in-depth tutorial. Dive into the core language, module system, and object-oriented features of OCaml. Learn about advanced topics such as polymorphic variants, generalized algebraic datatypes, and parallel programming. Master essential OCaml tools including the compiler, toplevel system, runtime system, and native-code compilation. Discover how to use lexer and parser generators, the debugger, and profiling tools. Gain expertise in interfacing C with OCaml, optimizing with Flambda, and fuzzing with afl-fuzz. Explore the OCaml library, including the core and standard libraries, compiler front-end, and various specialized libraries for Unix system calls, regular expressions, and dynamic linking. Conclude with comprehensive indexes for quick reference to modules, types, exceptions, values, and keywords.
Overview
Syllabus
I. An introduction to OCaml
- 1. The core language
- 2. The module system
- 3. Objects in OCaml
- 4. Labeled arguments
- 5. Polymorphic variants
- 6. Polymorphism and its limitations
- 7. Generalized algebraic datatypes
- 8. Advanced examples with classes and modules
- 9. Parallel programming
- 10. Memory model: The hard bits
- 11. The OCaml language
- 12. Language extensions
- 13. Batch compilation (ocamlc)
- 14. The toplevel system or REPL (ocaml)
- 15. The runtime system (ocamlrun)
- 16. Native-code compilation (ocamlopt)
- 17. Lexer and parser generators (ocamllex, ocamlyacc)
- 18. Dependency generator (ocamldep)
- 19. The documentation generator (ocamldoc)
- 20. The debugger (ocamldebug)
- 21. Profiling (ocamlprof)
- 22. Interfacing C with OCaml
- 23. Optimisation with Flambda
- 24. Fuzzing with afl-fuzz
- 25. Runtime tracing with runtime events
- 26. The “Tail Modulo Constructor” program transformation
- 27. The core library
- 28. The standard library
- 29. The compiler front-end
- 30. The unix library: Unix system calls
- 31. The str library: regular expressions and string processing
- 32. The runtime_events library
- 33. The threads library
- 34. The dynlink library: dynamic loading and linking of object files
- 35. Recently removed or moved libraries (Graphics, Bigarray, Num, LablTk)
- Index of modules
- Index of module types
- Index of types
- Index of exceptions
- Index of values
- Index of keywords
Taught by
Xavier Leroy, Damien Doligez, Alain Frisch, Jacques Garrigue, Didier Rémy and Jérôme Vouillon