Инструментарий
Быстрый старт
-
Установить OPAM.
-
Установить OCaml версии 5.1.0 через OPAM.
-
Установить необходимые пакеты:
opam pin add ocaml-lsp-server 1.15.1-5.0 opam install dune utop reason rtop ocaml-lsp-server ocamlformat merlin odoc odig base core stdio menhir sedlex ppx_jane ppx_compose
-
Желательно также установить Visual Studio Code и расширения OCaml Platform и Live Share.
Проверка установки
Распакуйте директорию hello
из архива с тестовым примером.
Если в этой директории команда dune exec ./hello.exe
выводит
((message hello) (receiver world))
то все настроено правильно.
Также если вы в VS Code открываете файл hello.re
и при этом:
-
Есть подсветка синтаксиса.
-
Вы нажимаете Ctrl+Shift+P, выбираете «Format document» и никаких ошибок нет.
-
Вы наводите на определение типа
type t
и видите всплывающую подсказку.
То значит и текстовый редактор тоже настроен правильно.
OCaml
OCaml — функциональный язык программирования общего назначения.
Установка
Необходимо установить:
-
Обратите внимание, что вы должны использовать команду
eval $(opam env)
для установки окружения OPAM. Как правило, эту команду обычно добавляют в профиль командной оболочки пользователя, например, в файлы.bashrc
,.zshrc
и прочие. -
Интерактивную оболочку
utop
:opam install utop
Материалы
Язык
-
Real World OCaml, 2nd Edition. Главы 1—10, 14, 17, 19—21.
Первое издание этой книги было переведено на русский язык под названием «Программирование на языке OCaml».
Reason
Reason — это альтернативный диалект языка OCaml.
Синтаксис OCaml свободно конвертируется в Reason и обратно.
Для этого в состав OCaml входит консольная программа refmt
и онлайн-утилита. Также можно воспользоваться расширением для браузеров Reason Tools.
Также существует аналог интерактивной оболочки utop
для Reason, который называется rtop
.
Dune
Dune — система сборки для OCaml.
Базовые команды
Visual Studio Code
Для работы с проектами на OCaml и Reason рекомендуется использовать текстовый редактор Visual Studio Code с установленным расширением OCaml Platform.
Некоторые полезные возможности расширения:
-
Навигация по коду и отображение документации.
-
Отображение обнаруженных ошибок.
-
Отображение выведенных типов.
-
Форматирование кода.
Препроцессоры
Очень часто код на OCaml и Reason подвергают препроцессингу, чтобы расширить синтаксис новыми возможностями.
Примеры препроцессоров:
-
ppx_jane
— по сути, коллекция из этих препроцессоров, каждый из которых можно отдельно загуглить. -
ppx_compose
— поддержка операторов композиции%
и%>
. -
sedlex — используется для удобного описания лексеров прямо в коде программы, см. ниже.
Библиотеки
Для домашних заданий
-
sedlex — генератор лексеров.
-
Menhir (документация, примеры) — генератор парсеров.
-
ocamlgraph (API) — библиотека для работы с графами.