OCaml Programming Language Profile

OCaml

The OCaml system is the main implementation of the Caml language. It has a very strong type-checking system, offers a powerful module system, automatic memory management, first-class functions, and adds a full-fledged object-oriented layer. OCaml includes a native-code compiler supporting numerous architectures, for high performance; a bytecode compiler, for increased portability; and an interactive loop, for experimentation and rapid development. OCaml’s integrated object system allows object-oriented programming without sacrificing the benefits of functional programming, parametric polymorphism, and type inference. The language is mature, producing efficient code and comes with a large set of general purpose as well as domain-specific libraries.

OCaml is often used for teaching programming, and by large corporations. OCaml benefits from a whole range of new tools and libraries, including OPAM (package manager), optimizing compilers, and development tools such as TypeRex and Merlin.


FACTS

Type of Language: Multi-paradigm: functional, imperative, object-oriented
Designed by: Xavier Leroy, Jérôme Vouillon, Damien Doligez, and Didier Rémy at INRIA
Public Release: 1996
License: LGPL
Website: ocaml.org


RECOMMENDED OPEN SOURCE BOOKS

Free OCaml Books


OPEN SOURCE SOFTWARE FOR DEVELOPERS

JS-of-ocaml – a stable OCaml to JavaScript compiler.
Bucklescript – a newer OCaml to JavaScript compiler.
OCaml-java – a stable OCaml to Java compiler.


USEFUL RESOURCES

Awesome OCaml – a curated list of references to awesome OCaml tools, frameworks, libraries and articles. Additionally there is a collection of freely available books, papers and presentations.


RECOMMENDED BOOK TO BUY

OCaml from the very beginning

PROGRAMMING LANGUAGE PROFILES

Ada, Assembly, Awk, Bash, C, C++, C#, Clojure, CoffeeScript, ECMAScript, Erlang, Forth, Fortran, Go, Haskell, HTML, Java, JavaScript, LaTeX, Lisp, Logo, Lua, OCaml, Pascal, Perl, PHP, Prolog, Python, R, Ruby, Rust, Scala, Scheme, Scratch, SQL, Swift, TeX, VimL