通过我的 PPX 语法扩展转换的 OCaml 代码找不到其他包

OCaml code transformed through my PPX syntax extension can't find other packages

所以,我为 OCaml 编写了一个简单的 PPX,它将一个愚蠢的 DSL 转换为一些库调用

[%jsx div]

变成类似

的样子
ReactJS.create_element "div"

但是,每当我尝试编译它时,我都会得到 'Unbound value ReactJS.create_element'。但奇怪的是,如果我让它输出转换后的代码,然后将该代码直接复制到文件中,它编译得很好。

PPX 语法扩展是否需要链接到它们生成的 AST 引用的任何库?我是不是漏掉了什么很傻的东西?

我正在使用以下简单的 ocamlbuild 命令构建我的项目:

ocamlbuild -use-ocamlfind \
    -package react,js_of_ocaml,js_of_ocaml.ppx \
    -package reactjs,reactjs_ppx \
    tutorial.byte tutorial.ml

并且 PPX generated/installed 通过 oasis。

有人有线索吗?

您可能创建了 longident 错误。你应该使用 Longident.parse。如果不是这种情况,请 link 到您的代码。

你知道 Tyxml and, in particular, the ppx syntax extension 吗?