OCaml is an industrial strength programming language supporting functional, imperative and object-oriented styles

Learn Learn

Learn

Find out about OCaml, read about users, see code examples, go through tutorials and more.

Documentation Documentation

Documentation

Install OCaml, look up package docs, access the Manual, get the cheat sheets and more.

Platform Platform

Packages

The OCaml Package Manager, gives you access to multiple versions of hundreds of packages.

Community Community

Community

Read the news feed, join the mailing lists, get support, attend meetings, and find OCaml around the web.

News RSSRSS

More...

A taste of OCaml

(* Binary tree with leaves car­rying an integer. *)
type tree = Leaf of int | Node of tree * tree

let rec exists_leaf test tree =
  match tree with
  | Leaf v -> test v
  | Node (left, right) ->
      exists_leaf test left
      || exists_leaf test right

let has_even_leaf tree =
  exists_leaf (fun n -> n mod 2 = 0) tree

OCaml is a lot more powerful than this simple example shows. See more examples!

Packages

Package Version Date
oasis 0.4.5 Oct 22, 2014
omd 1.1.2 Oct 22, 2014
abella 2.0.2 Oct 22, 2014
ojs-base 0.1.0 Oct 22, 2014
exn-source 0.1 Oct 21, 2014
xmldiff 0.5.0 Oct 21, 2014