Gerbalayf-kupit.ru

Любительский блог

Метки: Ocaml pxp, ocaml inria.

Objective Caml
Семантика:

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

Автор(ы):

INRIA

Релиз:

4.00.0 (26 июля 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 (из файла math/texvc.ml)

exception LexerException of string
let lexer_token_safe lexbuf =
    try Lexer.token lexbuf
    with Failure s -> raise (LexerException s)
 
let render tmppath finalpath tree =
    let outtex = Util.mapjoin Texutil.render_tex tree in
    let md5 = Digest.to_hex (Digest.string outtex) in
    begin
        let mathml = Mathml.render tree
        and html = Html.render tree
        in print_string (match (html,!Html.conservativeness,mathml) with
           None,_,None -> "+" ^ md5 
         | Some h,Html.CONSERVATIVE,None -> "c" ^ md5 ^ h
         | Some h,Html.MODERATE,None -> "m" ^ md5 ^ h
         | Some h,Html.LIBERAL,None -> "l" ^ md5 ^ h
         | Some h,Html.CONSERVATIVE,Some m -> "C" ^ md5 ^ h ^ "\000" ^ m
         | Some h,Html.MODERATE,Some m -> "M" ^ md5 ^ h ^ "\000" ^ m
         | Some h,Html.LIBERAL,Some m -> "L" ^ md5 ^ h ^ "\000" ^ m
         | None,_,Some m -> "X" ^ md5 ^ m
        );
        Render.render tmppath finalpath outtex md5
    end

Примечания

Ссылки

  • Официальный сайт языка OCaml (англ.)
  • Сайт OCaml Community (англ.)
  • Сайт Gerd Stolpmann’a, посвященный OCaml (англ.)
  • Перевод документации на русский язык
  • Перевод на русский язык книги Oreilly DAOC

Литература

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


Tags: Ocaml pxp, ocaml inria.