MyNixOS website logo
Description

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

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. It's widely used in teaching for its power and simplicity.

Strengths:

  • 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.

Learn more at: https://ocaml.org/learn/description.html.

Metadata

Version

5.1.1

Platforms (25)

    Darwin
    Linux
Show all
  • aarch64-darwin
  • aarch64-linux
  • armv5tel-linux
  • armv6l-linux
  • armv7a-darwin
  • armv7a-linux
  • armv7l-linux
  • i686-darwin
  • i686-linux
  • loongarch64-linux
  • m68k-linux
  • microblaze-linux
  • microblazeel-linux
  • mips-linux
  • mips64-linux
  • mips64el-linux
  • mipsel-linux
  • powerpc64-linux
  • powerpc64le-linux
  • riscv32-linux
  • riscv64-linux
  • s390-linux
  • s390x-linux
  • x86_64-darwin
  • x86_64-linux