OCaml учебник
Начало работы с OCaml
Поиск…
замечания
В этом разделе представлен обзор того, что такое ocaml, и почему разработчик может захотеть его использовать.
Следует также упомянуть о любых крупных предметах в рамках ocaml и ссылаться на связанные темы. Поскольку документация для ocaml нова, вам может потребоваться создать начальные версии этих связанных тем.
Установка или настройка
Установка OPAM
OPAM - это менеджер пакетов для OCaml. Он легко и быстро создает и обрабатывает версии компилятора и библиотеки OCaml.
Самый простой способ установки OPAM в вашей операционной системе - использовать диспетчер пакетов для вашей системы. например, apt-get, yum или homebrew.
Инструкции по установке Mac OSX
Обновите формулы homebrew и установите OPAM.
brew update
brew install opam
Инструкции по установке Ubuntu
add-apt-repository ppa:avsm/ppa
apt-get update
apt-get install ocaml opam
Компиляция из источника
wget http://caml.inria.fr/pub/distrib/ocaml-4.03/ocaml-4.03.0.tar.gz
tar xf ocaml-4.03.0.tar.gz
cd ocaml-4.03.0
./configure -prefix installation_path
make world.opt
make install
Инициализация OPAM
После установки OPAM запустите opam init и следуйте инструкциям.
После этого вы сможете запустить интерпретатор OCaml из своей оболочки.
$ ocaml
OCaml version 4.03.0
#
Ваша первая программа в OCaml
Теперь, когда дистрибутив OCaml доступен в вашей любимой операционной системе, мы можем создать вашу первую программу в OCaml: Hello World!
У нас есть разные способы запуска программы OCaml.
REPL (toplevel)
Вы можете выполнить свой код в интерактивном режиме с помощью верхнего уровня . С OCaml toplevel вы можете писать и выполнять OCaml-код, как оболочку UNIX. После этого топлевел немедленно проверяет тип вашего кода. Таким образом, вы можете быстро и легко протестировать некоторые части кода без компиляции и выполнения.
Вы можете запустить TopLevel с ocaml команды. Затем вы можете написать предложение OCaml закончилось по ;; который оценивается немедленно. Топлел отображает тип и значение вашего выражения сразу после:
# "Hello Worlds!";;
- : string = "Hello Worlds!"
Также возможно запустить полный файл в вашем файле. Вы можете увидеть это объяснение .
Чтобы облегчить ввод в верхний уровень , вы можете использовать инструмент, например, ledit или rlwrap который предоставляет некоторые функции (например, историю ввода):
$ ledit ocaml
$ rlwrap ocaml
Компиляция к байт-коду
У нас есть два разных компилятора, один из которых компилируется на байт-код, а другой - на собственный код. Первый такой же, как байт-код виртуальной машины Java. Таким образом, байт-код менее эффективен, но более портативен.
У нас есть файлы расширений, используемые компиляторами OCaml:
| расширение | определение |
|---|---|
.ml | Исходный код (как .c в C) |
.mli | Интерфейс (как .h в C) |
.cmo | Исходный код, скомпилированный ocamlc в байт-коде |
.cmi | Код интерфейса, составленный ocamlc |
.cmx и .o | Исходный код, скомпилированный ocamlopt в собственном коде |
.cma | Библиотека (ведро некоторого *.cmo ) в байтекоде |
.cmxa и .a | Библиотека в собственном коде |
.cmxs | Библиотека в собственном коде (для загрузки динамически) |
Компилятор байт-кода - ocamlc .
У вас разные варианты:
-
-c: скомпилировать исходный файл без процесса привязки (для создания исполняемого файла). Таким образом, командаocaml -c foo.mlпроизводит.cmoфайл. В отличие от C , в котором заголовочный файл не должен быть собран, необходимо в OCaml для компиляции.mliфайла:ocaml -c foo.mli.
Сначала вам нужно скомпилировать интерфейс. После компиляции исходного файла OCaml пытается проверить соответствие реализации интерфейса.
Файл .mli не является обязательным. Если вы скомпилируете .ml файл без файла .mli , OCaml автоматически .cmi файл .cmi .
-o: скомпилировать некоторые.cmoфайлы в исполняемый файл. Например:ocamlc -o program foo.cmo bar.cmo. Эти файлы должны быть организованы зависимостями, для которых первый файл не имеет никакой зависимости.-I: указать другой каталог, в котором компилятор может найти необходимые файлы для компиляции (например, интерфейс или исходный код). Это то же самое, что и-Iот компилятора C.
У нас есть много других вариантов. Дополнительную информацию вы можете найти в руководстве .
Итак, теперь вы можете написать hello.ml и скомпилировать этот файл с помощью ocamlc -o hello hello.ml для создания программы байт-кода :
let () = print_endline "Hello World!"
let () = ... является первой записью вашей программы (например, main в C). После этого мы используем функцию print_endline (предоставленную стандартной библиотекой) с аргументом "Hello World!" для печати Hello Worlds с новой строкой в стандартном выпуске.
После компиляции, у вас есть .cmo файл и .cmi файл автоматически производится компилятором и вашей программы hello . Вы можете открыть свою программу, и в верхней части этого файла вы можете увидеть:
#!/usr/local/bin/ocamlrun
Это означает, что вашей программе нужна программа ocamlrun (предоставляемая дистрибутивом) для выполнения байт-кода (например, JVM).
Компиляция с нативным кодом
У нас есть еще один компилятор, который создает собственный код. Компилятор: ocamlopt . Однако полученный исполняемый файл не может работать на большинстве других архитектур.
ocamlopt использует те же параметры, что и ocamlc поэтому вы можете выполнить ocamlopt -o hello hello.ml . После этого вы можете увидеть .cmx и .o .
Наконец, из вашей программы байт-кода / нативного кода вы можете выполнить:
$ ./hello
Hello World!
$
Установка на Windows (родной)
посылка
В этой инструкции показана процедура установки собственных исполняемых файлов OCaml в Windows. Если ваша операционная система - Windows 10 (Insider Preview) build 14316 или более поздняя Windows 10 (Insider Preview) build 14316 вы также можете установить OCaml через Bash на Ubuntu в Windows . В этом случае следуйте инструкциям по установке OCaml на Ubuntu.
Установите OCaml и Opam
Загрузите официальный дистрибутив OCaml . Он содержит как компиляторы OCaml, так и диспетчер пакетов Opam. Предположим, вы установили программное обеспечение в C:/OCaml . Чтобы убедиться, что вы установили OCaml open cmd.exe и введите ocaml .
Если вы видите сообщение 'ocaml' is not recognized as an internal or external command, operable program or batch file вам нужно добавить C:/OCaml/bin в свой путь (переменная среды).
Добавить двоичные файлы OCaml в путь
в Control Panel > System and Security > System > Advanced system settings (on the left) > Environment Variables затем выберите вкладку « Path в System Variable », затем « Edit .
Добавить C:/OCaml/bin; к списку.
Установка Cygwin
Без Cygwin вы не можете использовать Opam. На самом деле, если вы попытаетесь открыть Opam, набрав opam в cmd.exe появится сообщение: Fatal error: exception Unix.Unix_error(20, "create_process", "cygcheck") .
Загрузите Cygwin и запустите программу установки. Обязательно проверьте следующие пакеты:
- Automake
- Diffutils
- libreadline
- делать
- m4
- mingw64-x86_64-GCC-жильный
- mingw64-x86_64-ГМФ
- mingw64-x86_64-OpenSSL
- mingw64-x86_64-PKG-конфигурации
- mingw64-x86_64-sqlite3
- пластырь
- rlwrap
- расстегнуть молнию
- Wget
Предположим, вы установили программное обеспечение в C:/cygwin ( C:/cygwin64 для 64-битной версии). Откройте cmd и введите wget (или один из исполняемых файлов, присутствующих в C:/cygwin/bin ), чтобы проверить, можете ли вы использовать исполняемые файлы Cygwin. Если исполняемый файл не открывается, добавьте C:/cygwin/bin в свой путь (переменная среды).
Настройка Opam
Откройте cmd.exe и введите opam init для настройки Opam.
Затем установите ocamlfind (часть компилятора OCaml) с помощью
opam install ocamlfind
opam config env
Проверьте, установлен ли ocamlfind введя его в cmd.exe .
Команда opam config env используется для добавления opam исполняемых файлов opam в путь opam . Если после выхода из системы вы больше не можете достичь ocamlfind , вы можете вручную добавить его, добавив путь к следующей строке: C:/Users/<your user>/Documents/.opam/system/bin/ .
Установка пакетов
Пакеты устанавливаются через Opam с помощью команды opam install xyz где xyz - это имя пакета.
Установить UTop
Попробуйте запустить команду opam install utop . Если у вас нет ошибок, то при вводе utop откроется исполняемый файл.
Если вы видите сообщение
[ERROR] The compilation of zed failed at "ocaml setup.ml -build".
вам необходимо вручную установить отдельные пакеты. Повторите ввод:
opam install zed
opam install lambda-term
opam install utop
Как lambda-term и utop могут не устанавливаться. См. Раздел «Устранение неполадок».
Установка ядра
Вы можете установить core пакет с opam install core . В 64-битной версии Windows (и 64-битной Cygwin) вы увидите следующую ошибку:
[ERROR] core is not available because your system doesn't comply with os != "win32" & ocaml-version = "4.02.3".
Устранение неполадок: невозможно создать обычный файл
Если пакет с именем xyz.10.1 не удается установить (где xyz - это имя пакета и 10.1 его версия) со следующим сообщением:
install: cannot create regular file '/cygdrive/c/Users/<your user>/Documents/.opam/system/bin/<something>': File exists
Вы должны войти в этот каталог:
C:\Users\<your user>\Documents\.opam\repo\default\packages\<xyz>\<xyz.10.1>\files
и удалите файл xyz.10.1.install .
Устранение неполадок: невозможно загрузить общую библиотеку
Если вы попытаетесь открыть пакет Opam (например: utop ), и вы увидите эту ошибку:
Fatal error: cannot load shared library dlllwt-unix_stubs
Reason: The specified module could not be found.
Запустите opam config env раз и попробуйте повторно открыть исполняемый файл.