Разница между модулем и пакетом Ocaml
Я в основном пытаюсь следовать этому ответу stackru, расположенному в этом посте:
Какой самый лучший модуль для HttpRequest в OCaml
и я сталкиваюсь с проблемами. Когда я пытаюсь запустить один файл только с
open Lwt ;;
Я получаю и ошибаюсь, говоря, что это несвязанный модуль. Я выполнил следующую инструкцию по операциям:
opam install lwt
и он установил правильный пакет.
Поэтому я думаю, что проблема заключается в разнице между модулем и пакетом, который я не совсем понимаю. Я рассматривал этот вопрос как возможный ответ, но я не был уверен, что мне это нужно.
Спасибо за вклад, ребята, я новичок в 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