所以,我为 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/