OCaml

Язык программирования OCaml — это язык функционального программирования (семейства ML, что означает Meta Language), созданный в институте INRIA, Франция. Важной особенностью OCaml является то, что его компилятор порождает исполняемый код, по быстродействию сравнимый с С, родной для платформ, на которых OCaml реализован. В то же время, будучи функциональным по своей природе, он приближается к Python по степени выразительности. Именно поэтому для OCaml была создана библиотека Pycaml, фактически реализующая аналог C API для OCaml. Таким образом, в программах на OCaml могут использоваться модули языка Python, в них даже может быть встроен интерпретатор Python. Для Python имеется большое множество адаптированных C–библиотек, это дает возможность пользователям OCaml применять в разработке комбинированное преимущество Python и OCaml. Минусом является только необходимость знать функции Python/C API, имена которого использованы для связи OCaml и Python.

Следующий пример (из Pycaml) показывает программу для OCaml, которая определяет модуль для Python на OCaml и вызывает встроенный интерпретатор Python:

let foo_bar_print = pywrap_closure

 (fun x -> pytuple_fromarray (pytuple_toarray x)) ;;

let sd = pyimport_getmoduledict () ;;

let mx = pymodule_new "CamlModule" ;;

let cd = pydict_new () ;;

let cx = pyclass_new (pynull (), cd, pystring_fromstring "CamlClass") ;;

let cmx = pymethod_new (foo_bar_print,(pynull ()),cx) ;;

let _ = pydict_setitemstring (cd, "CamlMethod", cmx) ;;

let _ = pydict_setitemstring (pymodule_getdict mx, "CamlClass", cx) ;;

let _ = pydict_setitemstring (sd, "CamlModule", mx) ;;

let _ = pyrun_simplestring

 ("from CamlModule import CamlClass " ^

  "x = CamlClass() " ^

  "for i in range(100000): " ^

  " x.CamlMethod(1,2,3,4) " ^

  "print 'Done' ")

Больше книг — больше знаний!

Заберите 30% скидку новым пользователям на все книги Литрес с нашим промокодом

ПОЛУЧИТЬ СКИДКУ