We've added OCaml as a supported language on CodeEval.
OCaml is an industrial strength programming language supporting functional, imperative and object-oriented styles.
What is OCaml?
OCaml is a general purpose programming language with an emphasis on expressiveness and safety. Developed for more than 20 years at Inria by a group of leading researchers, it has an advanced type system that helps catch your mistakes without getting in your way. It's used in environments where a single mistake can cost millions and speed matters, is supported by an active community, and has a rich set of libraries and development tools.
For all its power, OCaml is also pretty simple, which is one reason it's often used as a teaching language.
See “A History of OCaml” for an account of the origins of the language.
The OCaml language offers 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 standalone applications. Portable bytecode compilers allow creating stand-alone applications out of Caml Light or OCaml programs. A foreign function interface allows OCaml code to interoperate with C code when necessary. Interactive use of OCaml is also supported via a “read-evaluate-print” loop.
In addition, OCaml 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, parametric and virtual classes.
Efficient native code compilers. In addition to its bytecode compiler, OCaml offers a compiler that produces efficient machine code for many architectures.
A Widely Used Programming Language
The OCaml language was initially used to develop applications that involve symbolic computation: automatic theorem provers, compilers and interpreters, program analyzers, etc. It is now used to develop software in many other application areas. This is illustrated by our list of selected success stories.
The OCaml language is widely used for teaching programming. It is also used inside academic projects in Europe, Asia, and the Americas. Several large corporations develop significant industrial projects in OCaml: these include Dassault Systèmes, Microsoft, IBM, and CEA (Commissariat à l'Énergie Atomique).
The OCaml Consortium offers industrial and academic partners a formal framework for participating in the development, maintenance, and evolution of OCaml. Partners also enjoy very liberal licensing conditions regarding the OCaml software distribution.