OASIS"选择性"内部模块的未绑定模块错误

时间:2016-06-16 11:59:15

标签: ocaml ocamlbuild

我尝试使用Oasis编译一个小的OCaml [4.03.0 + flambda]项目。我有四个模块,三个在Modules字段中声明,一个在InternalModules中声明。我的_oasis配置文件是there

内部模块名为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执行相同的open并使用Infix.Open运算符而没有任何问题或错误。我想知道发生了什么以及为什么agent.ml和page.ml受到绿洲的不同对待...

1 个答案:

答案 0 :(得分:2)

Lwt有一个Infix模块,它影响了您的Infix模块。只需颠倒打开的顺序。

请注意,打开Lwt通常被认为不是很好的风格。如果你想使用lwt的中缀运算符,你应该打开Lwt.Infix