OCaml

Материал из Seo Wiki - Поисковая Оптимизация и Программирование

Перейти к: навигация, поиск
<tr><th style="padding:3px">Семантика:</th><td class="" style="padding:3px">

мультипарадигменный: функциональный, объектно-ориентированный, императивный </td></tr><tr><th style="padding:3px">Автор(ы):</th><td class="" style="padding:3px"> INRIA </td></tr><tr><th style="padding:3px">Последняя версия:</th><td class="" style="padding:3px"> 3.11.2 (20 января 2010) </td></tr><tr><th style="padding:3px">Типизация данных:</th><td class="" style="padding:3px"> строгая, статическая </td></tr><tr><th style="padding:3px">Диалекты:</th><td class="" style="padding:3px"> F#, JoCaml, MetaOCaml, OcamlP3l </td></tr><tr><th style="padding:3px">Испытал влияние:</th><td class="" style="padding:3px"> Standard ML, Caml Light </td></tr> </table>

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

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

На языке OCaml, в частности написан рендеринг формул Википедии, использующих тег <math>, а также популярный файлообменный клиент MLDonkey.

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

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

Пример исходного текста на 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

Ссылки

Языки с похожими возможностями


Objective Caml
Файл:Caml.128x58.gif </span>
ca:Objective Caml

cs:OCaml de:Objective CAML el:OCaml en:Objective Caml es:Ocaml fr:Objective Caml gl:Ocaml it:Objective Caml ja:Objective Caml ka:ობიექტური კამლი ko:Objective Caml la:Ocaml nl:Ocaml nn:OCaml no:OCaml pl:OCaml pt:OCaml sl:Ocaml tg:OCaml tr:Ocaml uk:Objective Caml vi:OCaml zh:OCaml

Источник — «http://ns1.sbup.com/wiki/OCaml»
Личные инструменты

Served in 0.512 secs.