Skip to content

fp2021-helper/fp2021

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Mar 24, 2022
d98b5c2 · Mar 24, 2022
Oct 15, 2021
Jul 27, 2021
Mar 24, 2022
Oct 15, 2021
Aug 23, 2021
Jul 27, 2021
Sep 9, 2021
Oct 15, 2021
Aug 23, 2021
Jul 27, 2021
Aug 23, 2021
Aug 23, 2021
Sep 10, 2021
Oct 12, 2021
Oct 23, 2021

Repository files navigation

ФП 2021. Репо для домашек

Домашки по курсу ФП 2021 оформлять в виде пулл-реквестов к этому репо.

В директории /Lambda лежит шаблон-скелет, его нужно скопипастить и исправить под свои нужды:

  • переименовать нужные файлы под свой мини-язык;
  • пофикисить имя автора и т.п.
  • ну и сделать реализацию с тестами.

Ожидается примерно следующая структура репозитория

  • /Lambda -- шаблон проекта домашки, который редактирует только препод;
  • /CSharpExc -- реализация мини-С# c исключениями, на основе шаблона /Lambda;
  • /Java -- реализация мини-Java, снова на основе шаблона /Lambda;
  • и т.д.

Для Merge Requests настроен CI, который смотрит в какой директории (проекте) произошли последние изменения, и именно в этой директории запускает сборку и тесты. Например, если поменялся файл Lambda/src/Parser.ml, то запустятся все тесты из директории проекта Lambda, а тесты из проекта Java запускаться не будут.

Также CI собирает документацию к миниязыку и выкладывает её в https://kakadu.github.io/fp2021/doc/LANGUAGE (например в https://kakadu.github.io/fp2021/doc/Lambda)

N.B. Не удаляйте директорию Lambda. Это шаблон!

Подготовка окружения

Далее инструкции по найстройки всего под GNU/Linux. Но на Windows+WSL2 тоже должно работать.

Во-первых, нужен пакетный менеджер opam версии 2.х. С помощью него будем устанавливать OCaml 4.12.1 и необходимые пакеты. Системный OCaml (установленный, например, из репозиториев Ubuntu) использовать не рекомендуется.

После установки opam следует установить правильный компилятор командой (у меня обычно вместо SWITCHNAME используется 4.12.1+flambda)

opam switch create SWITCHNAME --packages=ocaml-variants.4.12.1+options,ocaml-option-flambda

Перед этим можно удалить другие switch'и, если они есть, с помощью команды opam switch remove SWITCHNAME.

После установки у вас будет рабочий компилятор по-умолчанию в директории ~/.opam/SWITCHNAME/bin. В конце установки opam вам предложит что-то добавить в ~/.bashrc, чтобы пути к компилятору автоматически подхватывались. Рекомендую это сделать.

Если что-то пошло не так, то всегда можно указать нужный свитч руками командой, например:

export OPAMSWITCH=SWITCHNAME && eval $(opam env)

и затем убедиться, что путь до компилятора правильный

$ which ocamlc                                    
/home/username/.opam/SWITCHNAME/bin/ocamlc

Замечание. Когда вы будете запускать VsCode, то информация об окружении opam из файла ~/.bashrc автоматически применяться не будет, потому что так это работает в UNIX системах из покон веков. Рекомендуется, либо запускать VsCode из-под opam командой opam exec -- code, либо прописать в месте запуска правильную переменную среды OPAMSWITCH, и запускать opam через sh: sh -c 'eval $(opam env) && code'

Когда VsCode запустится, её плагин https://marketplace.visualstudio.com/items?itemName=ocamllabs.ocaml-platform слева снизу должен показать, что правильная версия компилятора подцепилась.

В процессе работы вам также понадобится автоформаттер кода. Он устанавливается с помощью opam install ocamlformat в

 $ which ocamlformat  
 /home/username/.opam/SWITCHNAME/bin/ocamlformat

Необходимо также в VsCode включить автоформатирование: Settings->Text Editor->Formatting->Format On Paste и Format on Save.