Explore the OCaml Documentation

You can explore the OCaml documentation, Platform Tools, guides, exercises, and books to enhance your knowledge.
Install OCaml 5.1.0
Standard Library API
The index of types, exceptions, values, modules, and module types of the OCaml Standard Library



Introduction To OCaml

Install OCaml and gain a high-level understanding of the language
Get Started

The OCaml Language

An in-depth explanation of language features and data structures from the Standard Library
Language Documentation

OCaml Programming: Correct + Efficient + Beautiful


This textbook, used in a third-semester Cornell course, teaches functional programming and data structures in OCaml, emphasizing semantics and software engineering. Suitable for students with Python and Java backgrounds, it requires some imperative language skills and basic discrete mathematics. The book includes over 200 YouTube videos as supplementary or alternative learning resources.

See More Books

OCaml From the Very Beginning


John Whitington's "OCaml from the Very Beginning" is a beginner-friendly guide to learning OCaml, a modern programming language. The book gradually introduces concepts in concise chapters, with exercises and answers. It's suitable for both novice and experienced programmers, and can be used in academic settings or for self-study.

See More Books



Practical-Minded Tutorials and Guides

How to solve real-world problems in OCaml
See More Guides

The OCaml Platform

Learn to leverage the tooling around OCaml and create your own projects and libraries
Platform Tools Documentation

Real World OCaml


This practical book guides through using OCaml for real-world problems in data processing and web applications, covering its various programming styles with real examples. It starts with basics and advances to topics like the module system and foreign-function interface, focusing on efficient coding using the Jane Street core library.

See More Books

More OCaml: Algorithms, Methods, & Diversions


"More OCaml" by John Whitington explores OCaml's functional programming and algorithms, concluding with a PDF file project. Tailored for both existing OCaml programmers and those new to the language, it includes exercises with answers. The book starts with an OCaml fundamentals summary, making it accessible and informative for a diverse readership.

See More Books

Language Manual

The OCaml language manual is a comprehensive guide covering syntax, features, and usage. It assists developers and learners in understanding capabilities, best practices, and language features.

Take Me There



OCaml Scientific Computing


This book merges functional programming in OCaml with numerical computation, tailored for data science and AI. It's ideal for those familiar with functional programming, offering a mix of foundational concepts and advanced cloud computing techniques. The structure allows readers to choose topics of interest, making it a versatile guide for learning and applying scientific computing.

See More Books


Aspiring towards greater understanding of the language? Want to push the limits and discover brand new things? Check out papers written by leading OCaml researchers:
Retrofitting Effect Handlers Onto OCaml
Effect handlers have been gathering momentum as a mechanism for modular programming with user-defined effects. Effect handlers allow for non-local control flow mechanisms such as generators, async/await, lightweight threads, and coroutines to be composably expressed. We present a design and evaluate a full-fledged efficient implementation of effect handlers for OCaml, an industrial-strength multi-paradigm programming language. Our implementation strives to maintain the backwards compatibility and performance profile of existing OCaml code. Retrofitting effect handlers onto OCaml is challenging since OCaml does not currently have any non-local control flow mechanisms other than exceptions. Our implementation of effect handlers for OCaml: (i) imposes a mean 1% overhead on a comprehensive macro benchmark suite that does not use effect handlers; (ii) remains compatible with program analysis tools that inspect the stack; and (iii) is efficient for new code that makes use of effect handlers.
K. C. Sivaramakrishnan, Stephen Dolan, Leo White, Tom Kelly, Sadiq Jaffer, Anil Madhavapeddy
Extending OCaml's `open`
We propose a harmonious extension of OCaml's `open` construct. OCaml's existing construct `open M` imports the names exported by the module `M` into the current scope. At present `M` is required to be the path to a module. We propose extending `open` to instead accept an arbitrary module expression, making it possible to succinctly address a number of existing scope-related difficulties that arise when writing OCaml programs.
Runhang Li, Jeremy Yallop
Bounding Data Races in Space and Time
We propose a new semantics for shared-memory parallel programs that gives strong guarantees even in the presence of data races. Our local data race freedom property guar- antees that all data-race-free portions of programs exhibit sequential semantics. We provide a straightforward oper- ational semantics and an equivalent axiomatic model, and evaluate an implementation for the OCaml programming language. Our evaluation demonstrates that it is possible to balance a comprehensible memory model with a reasonable (no overhead on x86, ~0.6% on ARM) sequential performance trade-off in a mainstream programming language
Stephen Dolan, KC Sivaramakrishnan, Anil Madhavapeddy
View all papers