Objective CAML

(redirected from O'caml)

Objective CAML

(Originally "CAML" - Categorical Abstract Machine Language) A version of ML by G. Huet, G. Cousineau, Ascander Suarez, Pierre Weis, Michel Mauny and others of INRIA. CAML is intermediate between LCF ML and SML It has first-class functions, static type inference with polymorphic types, user-defined variant types and product types, and pattern matching. It is built on a proprietary run-time system.

The CAML V3.1 implementation added lazy and mutable data structures, a "grammar" mechanism for interfacing with the Yacc parser generator, pretty-printing tools, high-performance arbitrary-precision arithmetic, and a complete library.

in 1990 Xavier Leroy and Damien Doligez designed a new implementation called CAML Light, freeing the previous implementation from too many experimental high-level features, and more importantly, from the old Le_Lisp back-end.

Following the addition of a native-code compiler and a powerful module system in 1995 and of the object and class layer in 1996, the project's name was changed to Objective CAML. In 2000, Jacques Garrigue added labeled and optional arguments and anonymous variants.

Objective CAML Home.

Usenet newsgroup: news:comp.lang.ml.

["The CAML Reference Manual", P. Weis et al, TR INRIA-ENS, 1989].
References in periodicals archive ?
O'Caml has been used as a language for mobile code in the development of the MMM [Rouaix 1996b, 1996a] Web browser, also developed at Inria.
The main characteristics of O'Caml and its implementation are:
O'Caml offers automatic type reconstruction, s is usual with languages in the ML family.
O'Caml offers a rich higher-order module system in which modules have signatures, providing the names and types of exported elements.
Higher-order functions are at the heart of functional languages, and are thus not specific to O'Caml.
O'Caml includes support for concurrency through threads and mutexes (although applets do not support the use of threads) and class-based object orientation through an extension of the typing discipline.
The advantage of O'Caml is a richer language, with support for several programming paradigms: functional, imperative, and object-oriented.
This is not possible in the model employed by Java and O'Caml.
For Java and O'Caml, support for concurrency is rudimentary; multiple threads of control and corresponding serialization are supported (O'Caml applets do not support concurrency, though).
In the case of O'Caml and Limbo, the trust is based on a cryptographic signature of a trusted authority.