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

标签 ocaml ppx

所以,我为 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 是通过 oasis 生成/安装的。

有人有线索吗?

最佳答案

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

你知道Tyxml吗?特别是ppx syntax extension

关于通过我的 PPX 语法扩展转换的 OCaml 代码找不到其他包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36477607/

相关文章:

functional-programming - 无法在ocaml中打开Llvm

ocaml - 使兼容的 ocaml、camlp4、ppx、node、js_of_ocaml、ocamlbuild

ocaml - OCaml ppx_xml_conv 模块是否有任何使用示例

ocaml - 如何使用 ppx 为数据类型派生 to_string 方法

ocaml - 使用 ppx_driver (register_transformation_using_ocaml_current_ast) 进行 AST 转换的任何良好用法示例?

function - OCaml 中的这两个函数定义有何不同?

pattern-matching - OCaml 模式与非常量匹配

ocaml - 用于解析简单表达式的 ocamlyacc/menhir 的轻量级替代品是什么?

ocaml - 为什么 "1.0 == 1.0"在Ocaml中为假?