Caml Light

Caml Light 0.74

Manage and process Caml programming files
0.74 (See all)
Implement the elements of the Caml language. Access custom modules and create, manage, remove, and check individual layers of data. Compile the native code and interpret the file structures. Develop interactive loops, manage separate elements, switch architectures, etc.

Caml is a general-purpose programming language, designed with program safety and reliability in mind. It is very expressive, yet easy to learn and use. Caml supports functional, imperative, and object-oriented programming styles. It has been developed and distributed by INRIA, a French research institute in computer science and applied mathematics, since 1985.

Both implementations of Caml offer:

- A powerful type system, equipped with parametric polymorphism and type inference. For instance, the type of a collection can be parameterized by the type of its elements. This allows defining some operations over a collection independently of the type of its elements: sorting an array is one example. Furthermore, type inference allows defining such operations without having to explicitly provide the type of their parameters and result.
- User-definable algebraic data types and pattern matching. New algebraic data types can be defined as combinations of records and sums. Functions that operate over such data structures can then be defined by pattern matching, a generalized form of the well-known switch statement, which offers a clean and elegant way of simultaneously examining and naming data.
- Automatic memory management, thanks to a fast, unobtrusive, incremental garbage collector.
- Separate compilation of stand-alone applications. Portable bytecode compilers allow creating stand-alone applications out of Caml Light or Objective Caml programs. A foreign function interface allows Caml code to interoperate with C code when necessary. Interactive use of Caml is also supported via a “read-evaluate-print” loop.

In addition, Objective Caml features:

- A sophisticated module system, which allows organizing modules hierarchically and parameterizing a module over a number of other modules.
- An expressive object-oriented layer, featuring multiple inheritance and parametric classes.
- Efficient native code compilers. In addition to its bytecode compiler, Objective Caml offers a compiler that produces efficient machine code for many architectures.

Info updated on: