This website is a set of practical, detailed tutorials for people who want to learn Objective CAML (often known as just "OCaml").
OCaml is a fast, concise and powerful language for application development - but I assume you already knew that, and I also assume you've managed to install it. If not, you can find out more at the main OCaml webpages or at the OCaml Alliance's getting started area.
Foreign language versions are:
About Objective CAML
Objective Caml - A general purpose high-level programming language
Didier Rémy, Xavier Leroy, Pierre Weis
Abstract: Objective Caml is a general purpose programming language that combines functional, imperative,...
- The Objective Caml manual which is the official reference for the language and the standard library. It contains also a good introduction to the language.
- List of resources at the main OCaml site
- Caml FAQ from the old OCaml web site, still very useful
- Unix system programming in Objective Caml assumes familiarity with conventional languages
General online tutorials
- A short tutorial by David Matuszek
- Some other links to learning materials
- Jason Hickey's introduction to Objective Caml [PDF, 109 pages]
- Didier Rémy's Using, Understanding, and Unraveling the OCaml Language [PDF, 175 pages]
- Some OCaml example programs on Jon Harrop's site
Lablgtk (Gtk interface)
- LablGTK2 tutorial by SooHyoung Oh
Camlp4 (macro preprocessing)
- A great tutorial on camlp4, on how to extend the syntax of OCaml with the Camlp4 standard tool (for ocaml 3.9.* but the basics are similar for the new version of camlp4 shipped with ocaml 3.10.*).
Lex and yacc (writing scanners and parsers)
- Ocamllex tutorial and its companion Ocamlyacc tutorial, by SooHyoung Oh.
Calling C libraries (the OCaml FFI)
- Florent Monnier's tutorial for writing C wrappers
- A post by Hendrik Tews to caml-list points out a few things you want to keep in mind when handling exceptions in C.
Books & magazines
- Jon Harrop's OCaml for Scientists book
- An introduction to OCaml, from the Linux Gazette.
- Introducing OCaml from the OCaml Journal
- Jason Hickey will be publishing a book in
2008 2009 through Cambridge University Press. There is a variant of this book published by Tim Rentsch, and dispute about the copyright, which you can read on
caml-list mailing list.
- Le Langage Caml and Manuel de référence du langage Caml which are a French book and reference manual on the Caml Light programming language, an ancestor language of OCaml but with some differences.
OCamlCore is a community of OCaml users:
- OCamlCore planet, collected blogs of OCaml programmers
- OCamlCore forge is a development / hosting site for free software projects written in OCaml
The OCaml hump is a list of OCaml libraries and other projects.
Here are some of the people who have helped write this tutorial:
- Doug Bagley
- Nicolas Cannasse
- Eric C. Cooper
- Richard Donkin
- Jim Farrand
- Fabrice Le Fessant
- Jacques Garrigue
- Stephen Gilmore
- Flavio Grossi
- Damien Guichard
- Brian Hurt
- Neel Krishnaswami
- Michel Levy
- Sven Luther
- John Gerard Malecki
- Luc Maranget
- Jean-Francois Monin
- Markus Mottl
- Thomas Mraz
- Wolfgang Mueller
- Lars Nilsson
- Jose Manuel Nunes
- Frederic van der Plancke
- Paul Steckler
- Fabian Sturm
- Ryan Tarpine
- Remi Vanicat
- Yamagata Yoriyuki
- Stefano Zacchiroli
Thanks to them and to all members of caml-list and ocaml-beginners.
This website is provided and funded by Merjis - leaders in Internet marketing.
About this wiki
This website is a wiki. This means you can edit any page to correct mistakes or improve the tutorial. Because of spammers signing up endless fake accounts, I have disabled new account creation. Please email rich on-the-annexia.org server for a new account.
If you are new to wikis, please use the Sandbox to try out editing (you can write anything in the sandbox).
Please discuss major changes in the Discussion area. Most pages also have their own discussion area (called "page/discussion") where you can discuss major changes affecting that page. If the discussion area for a page doesn't exist, just create it first.