OCaml From the Ground Up
To Betty Bourbaki.

This is a work in progress introductory book on OCaml.

Already available chapters:

  1. Preface
  2. Values and bindings
  3. Arithmetics
  4. Functions
  5. Booleans and conditional expressions
  6. Recursive functions
  7. Higher order functions and parametric polymorphism
  8. Algebraic data types and pattern matching
  9. Error handling
  10. Linked lists and structural recursion
  11. Records and references


The git repo is at github.com/dmbaturin/ocaml-book.

What sets this book apart is that it's under CC-BY-SA, a free, strong copyleft license similar to the GNU GPL in spirit.

It belongs to the community and everyone can freely distribute and modify it. Even if the original authors no longer have time to maintain it, the community can keep it up to date and distribute updated versions.

Right now the book is obviously incomplete, but together we can complete it faster than I can do it alone. Every contribution counts! Beta reading and editing are important. If you want to write a whole chapter, that's even better.

Just like with free software, the copyright stays shared between all contributors.

Principles behind the book

  1. Build it bottom up, never introduce a concept before it can be fully explained.
  2. Stick with the standard library.
  3. When third-party libraries are used, mention it prominently and use fully qualified names.
  4. Don't make it REPL-centric.
  5. Do not mention foxes or chunky bacon.

Chapters to be written

If you want to help writing any of those, you are welcome!

Strings and buffers
Immutable strings vs mutables bytes. Operations on strings. Operations on buffers.
Polymorphic variants
Polymorphic variants as a fallback to dynamic typing. Subtyping. Open types.
Introduction to modules
Defining modules. open, let open ... in, and module M = ....
Module signatures
Module types. Signature ascription. Abstract types and information hiding.
Input and output
File descriptor types. Input/output operations.