OCaml

OCaml
Objective Caml
Caml.128x58.gif
Семантика:

мультипарадигменный: функциональный, объектно-ориентированный, императивный

Автор(ы):

INRIA

Релиз:

4.00.1 (5 октября 2012)

Типизация данных:

строгая, статическая

Диалекты:

F#, JoCaml, MetaOCaml, OcamlP3l

Испытал влияние:

Standard ML, Caml Light

Сайт:

caml.inria.fr

OCaml — современный объектно-ориентированный язык функционального программирования общего назначения, который был разработан с учётом безопасности исполнения и надёжности программ. Этот язык имеет высокую степень выразительности, что позволяет его легко выучить и использовать. Язык CaML поддерживает функциональную, императивную и объектно-ориентированную парадигмы программирования. Был разработан в 1985 году во французском институте INRIA, который занимается исследованиями в области информатики. Самый распространённый в практической работе диалект языка ML.

Инструментарий OCaml включает в себя интерпретатор, компилятор в байткод и оптимизирующий компилятор в машинный код, превосходящий по своим параметрам аналогичные компиляторы C/C++ для многих задач, особенно связанных с синтаксическим анализом и т. п.

На языке OCaml, в частности, написан рендеринг формул Википедии, использующих тег <math>, файлообменный клиент MLDonkey, стек управления гипервизором Xen xapi (является частью Xen Server/Xen Cloud Platform), язык программирования HaXe.

К достоинствам языка относят:

  • строгую типизацию;
  • развитую систему модулей;
  • автоматическую сборку мусора;
  • эффективность;
  • кроссплатформенность.

Содержание

Примеры исходного текста на OCaml

Запуск интерпретатора OCaml

Для запуска интерпретатора языка OCaml необходимо в консоли ввести следующую команду:

$ ocaml
       Objective Caml version 3.09.0
  #

Теперь можно вводить различные выражения, которые интерпретатор будет считывать, вычислять и выводить результат на экран:

# 1 + 2 * 3;;
- : int = 7

Hello world

Следующая программа "hello.ml":

print_endline "Hello World!"

может быть скомпилирована либо в байт-код:

$ ocamlc hello.ml -o hello

либо в оптимизированный нативный код:

$ ocamlopt hello.ml -o hello

и запущена:

$ ./hello
Hello World!
$

Вычисление суммы элементов списка

Список является одним из основных типов данных в OCaml. Следующий пример кода определяет рекурсивную (обратите внимание на ключевое слово rec) функцию, которая перебирает элементы данного списка и возвращает их сумму.

let rec sum xs =
  match xs with
    | []       -> 0
    | x :: xs' -> x + sum xs'
 # sum [1;2;3;4;5];;
 - : int = 15

Другой способ подсчета суммы заключается в использовании функции свёртки:

let sum xs =
    List.fold_left (+) 0 xs
 
 
  # sum [1;2;3;4;5];;
  - : int = 15

Быстрая сортировка

В следующем примере приведен алгоритм быстрой сортировки, который сортирует список в порядке возрастания:

 let rec qsort = function
   | [] -> []
   | pivot :: rest ->
       let is_less x = x < pivot in
       let left, right = List.partition is_less rest in
       qsort left @ [pivot] @ qsort right

Последовательность Фибоначчи

let rec fib_aux n a b =
  match n with
  | 0 -> a
  | _ -> fib_aux (n - 1) (a + b) a
let fib n = fib_aux n 0 1

Примечания

Ссылки

Литература

Список книг, доступных онлайн



Wikimedia Foundation. 2010.

Игры ⚽ Нужно решить контрольную?

Полезное


Смотреть что такое "OCaml" в других словарях:

  • OCaml — Paradigm(s) multi paradigm: imperative, functional, object oriented Appeared in 1996 Developer INRIA Stable release 3.12.1 (July 4, 2011; 4 months ago ( …   Wikipedia

  • OCaml — Objective Caml Apparu en 1987 (CAML), 1996 (OCaml) Développeur INRIA Dernière version stable …   Wikipédia en Français

  • Ocaml — Objective Caml Apparu en 1987 (CAML), 1996 (OCaml) Développeur INRIA Dernière version stable 3.11.1 (le 12  …   Wikipédia en Français

  • OCAML — Objective CAML Erscheinungsjahr: 1996 Entwickler: INRIA Aktuelle Version: 3.11.0  (04. Dezember 2008) Betriebssystem: Plattformunabhängig …   Deutsch Wikipedia

  • OCaml — Objective CAML Erscheinungsjahr: 1996 Entwickler: INRIA Aktuelle Version: 3.11.0  (04. Dezember 2008) Betriebssystem: Plattformunabhängig …   Deutsch Wikipedia

  • Ocaml — Objective CAML Erscheinungsjahr: 1996 Entwickler: INRIA Aktuelle Version: 3.11.0  (04. Dezember 2008) Betriebssystem: Plattformunabhängig …   Deutsch Wikipedia

  • Ocaml — El lenguaje Objective CAML, también llamado Ocaml u O Caml, es un lenguaje de programación avanzado de la familia de los lenguajes ML, desarrollado y distribuido por el INRIA en Francia. Ocaml admite los paradigmas de programación imperativa,… …   Wikipedia Español

  • Ocaml — El lenguaje Objective CAML, también llamado Ocaml o O Caml, es un lenguaje de programación avanzado de la familia de los lenguajes ML, desarrollado y distribuido por el INRIA en Francia. Ocaml admite los paradigmas de programación imperativa,… …   Enciclopedia Universal

  • OCAML — El lenguaje Objective CAML, también llamado Ocaml u O Caml, es un lenguaje de programación avanzado de la familia de los lenguajes ML, desarrollado y distribuido por el INRIA en Francia. Ocaml admite los paradigmas de programación imperativa,… …   Enciclopedia Universal

  • Ocaml — …   Википедия


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»