OASIS "Selective"内部模块的未绑定模块错误



我尝试使用OASIS编译一个小的OCAML [4.03.0 Flambda]项目。我有四个模块,在模块字段中声明了三个模块,一个使用内部模块。我的_OASIS配置文件在那里。

内部模块被命名为infix,并包含一个子模块选项,该选项收集了一些有用的Infix操作员来处理选项类型。在当前代码的GitHub版本中,可以在此处获得,一切正常,我能够构建项目。无论如何,如果我在源文件代理中添加" open infix.option"行,以便现在看起来像

[..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.poin.pon operator。没有任何问题或错误。我想知道发生了什么以及为什么oasis对apent.ml和page.ml的处理方式有所不同...

Lwt具有Infix模块,该模块会遮蔽您的Infix模块。只需扭转打开的顺序即可。

请注意,打开Lwt通常被认为不是很好的样式。如果要使用LWT的Infix操作员,则应打开Lwt.Infix

最新更新