Я пытаюсь скомпилировать небольшой проект OCaml [4.03.0 + flambda] с использованием Oasis. У меня есть четыре модуля, три из которых указаны в поле «Модули» и один - с использованием «Внутренние модули». Мой файл конфигурации _oasis: there.OASIS «выборочная» ошибка модуля Unbound для внутреннего модуля
Внутренний модуль называется Infix и содержит параметр подмодуля, который собирает некоторые полезные операторы infix для работы с типами опций. В текущей версии кода github, доступной here, все работает отлично, и я могу построить проект. Во всяком случае, если я добавить строку «открытой Infix.Option» в исходном файле agent.ml, так что он теперь выглядит
[..LICENSE..]
open Lwt
open Cohttp
open Cohttp_lwt_unix
open Infix.Option
type http_status_code = Cohttp.Code.status_code
type http_headers = Cohttp.Header.t
[..]
и я получаю следующую ошибку
+ /home/yann/.opam/4.03.0+flambda/bin/ocamlfind ocamlc -c -g -annot -bin-annot -package cohttp -package cohttp.lwt -package lambdasoup -package lwt -package uri -I src -o src/agent.cmo src/agent.ml
File "src/agent.ml", line 23, characters 5-17:
Error: Unbound module Infix.Option
который является неожиданным, особенно потому, что мой текущий исходный файл page.ml выполняет одно и то же открытие и использует операторы Infix.Open без каких-либо проблем или ошибок. Интересно, что происходит, и почему agent.ml и page.ml обрабатываются по-разному оазисом ...