Разница между модулем и пакетом Ocaml

Я в основном пытаюсь следовать этому ответу stackru, расположенному в этом посте:

Какой самый лучший модуль для HttpRequest в OCaml

и я сталкиваюсь с проблемами. Когда я пытаюсь запустить один файл только с

open Lwt ;; 

Я получаю и ошибаюсь, говоря, что это несвязанный модуль. Я выполнил следующую инструкцию по операциям:

opam install lwt

и он установил правильный пакет.

Поэтому я думаю, что проблема заключается в разнице между модулем и пакетом, который я не совсем понимаю. Я рассматривал этот вопрос как возможный ответ, но я не был уверен, что мне это нужно.

Несвязанные модули в OCaml

Спасибо за вклад, ребята, я новичок в Ocaml и пытаюсь изучить все тонкости построения чего-либо.

2 ответа

Решение

Чтобы использовать "пакет", вы должны явно сообщить об этом компилятору. Несвязанный модуль в OCaml обычно означает одну из двух вещей: вы сделали опечатку с именем модуля или не смогли установить правильный путь поиска модуля. Какие параметры компилятора вы используете?

Если вы используете ocamlfind, компиляция должна выглядеть так:

ocamlfind ocamlc -package lwt -c mymodule.ml

это указывает компилятору попытаться найти модули в каталоге установки пакета lwt, в дополнение к стандартным.

если вы не используете ocamlfind.... ну, используйте ocamlfind.

Команда для компиляции нашей программы будет:

ocamlfind ocamlopt -o progprog -linkpkg \
  -package lablGL,sdl,sdl.sdlimage,sdl.sdlmixer,sdl.sdlttf \
  module1.ml module2.ml

Как видно на: https://ocaml.org/learn/tutorials/compiling_ocaml_projects.html

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