Соответствующие методы интерактивной разработки OCaml с использованием VScode и терминала [закрыто]

Интересно, какой самый удобный способ программирования в Ocaml (в MAC)?

В настоящее время я использую VSCode для обнаружения синтаксических ошибок и ошибок типа, но затем я использую онлайн-интерпретаторы для компиляции (он создает ml) и запуска на нем примеров; Я имею в виду, чтобы создавать экземпляры переменных, тестовых примеров и т. Д. Например, я использую онлайн: https://try.ocamlpro.com/.

Я знаю, что это не лучший способ сделать это: например, если пакет не интегрирован (скажем, num), Я не могу opam install num и откройте его.

Поэтому мне интересно, какой вариант лучше всего иметь (1) классный интерфейс, такой как VSCode, и (2) компилировать + тестировать на лету.

Я думаю, что близок к следующему варианту: я пишу ocaml в терминале, а затем открывается режим:

      OCaml version 4.10.2
#
#
#

...

Там я могу написать: #open Num;; #open List;; #let... но я не знаю, как на него загружать файлы.

Кто-то также сказал мне, что есть что-то под названием «утоп», но я посмотрел, и мне это кажется продвинутым.

Любая помощь приветствуется!

1 ответ

Решение

Этот режим разработки полностью поддерживается dune, который предлагает команду dune utop , которая автоматически построит ваш проект, свяжет его с верхним уровнем и запустит его со всеми доступными вашими модулями (и внешними зависимостями).

Теперь, если вы еще не используете Dune, вы можете задаться вопросом, с чего начать. Хотя документация по дюнам хороша и исчерпывающа, никто не хочет тратить часы на изучение Dune, если единственное, что они хотят, - это играть с OCaml. Итак, вот быстрый совет: чтобы создать готовый к запуску код OCaml, используйте dune init, например,

      dune init proj play 

Это создаст папку, в которой будет полностью готов к использованию скелет проекта OCaml. Итак, давайте войдем в него,

      cd play

Теперь мы можем легко собрать и запустить наш проект,

      dune exec play

У нас также есть play библиотека в libпапка. Он пуст, но вы можете создавать там любые файлы, и они будут доступны в вашем bin/main.ml а также в dune utop, например, давайте создадим простой модуль,

      (* file lib/say.ml *)

let hello () = print_endline "Hi!"

а затем мы можем использовать его в нашем исполняемом файле,

      (* file bin/main.ml *)

let () = Play.Say.hello ()

и мы можем играть на верхнем уровне OCaml с нашими библиотеками, например,

      $ dune utop 

а затем в утопной оболочке

      utop # Play.Say.hello ();;
Hi!
- : unit = ()

Так что насчет vscode? Пока играли в консоль, но vscodeвместе с ocaml-platformудобного может сделать это, не выходя из редактора. Вы даже можете выбрать фрагменты кода и отправить верхний уровень (привязка клавиш по умолчанию Shift-Enter), который обеспечивает интерактивную и итеративную разработку снизу вверх.

Другие вопросы по тегам