在OCaml 4.00中增加了一个来自Alain Frisch of Lexifi over a year ago for an alternative to camlp4 for writing sytnax extensions making use of the -ppx flag的建议。当时他提到还有一些工作要做(属性,引用等),但它已经有用了。 OCaml 4.01是否改进了对这种编写语法扩展风格的支持?现在有人使用这种机制而不是camlp4,或者camlp4仍然是为OCaml编写语法扩展的推荐方式吗?OCaml的-ppx语法扩展的状态是什么?
7
A
回答
10
“(属性,引号等)”的工作由Alain以OCaml编译器源的一个分支的形式完成,名为扩展点。在该分支上的进展在公众wg-camlp4邮件列表上进行了广泛讨论,但未集成到4.01中。自4.01发布以来,它已被集成到trunk(编译器的参考开发分支)中,所以它应该可用于4.02(请注意,主要版本目前倾向于每年发布)。
Alain在trunk/experimental/frisch/extension_points.txt中维护一种针对扩展点的文档格式。它明显不包括全部 Camlp4的用例,但仍然是其中的一大部分。你是否宁愿使用这是一个个人决定;这个承诺是稍微笨拙的语法为您提供了更易于部署和与工具和其他扩展的互操作性。
从4.00或4.01开始,-ppx
不适用于语法扩展,您只能处理(也可能是过滤/转换)语法有效的OCaml代码。颠覆现有的OCaml语法来增加新的含义在技术上是可行的,但我会建议不要这样做。如果你想使用它来扩展语法,你应该等待4.02。
相关问题
- 1. OCaml的顶层与语法扩展
- 2. 使用PPX和扩展点
- 3. 什么是扩展方法?
- 4. 这ocaml语法是什么意思?
- 5. Javascript语言的状态是什么?
- 6. Haskell的扩展是什么?
- 7. 什么是file.sc的扩展
- 8. Class <?的语法是什么?在kotlin中扩展class_name>?
- 9. request.referer方法的状态是什么?
- 10. MEF为什么ComposePart是扩展方法?
- 11. 为什么Stream.CopyTo不是扩展方法?
- 12. AjaxControlToolkit - 扩展 - 什么是“当前”方法?
- 13. Qt:Windows 7任务栏扩展支持的当前状态是什么?
- 14. ngrx/strore示例应用程序,为什么子状态扩展了根状态?
- 15. 静态函数的语法是什么?
- 16. 类扩展的语法是否更改?
- 17. 为什么动态类型的扩展方法无法解决?
- 18. 什么是标记扩展?
- 19. 什么是.tt扩展?
- 20. 什么是扩展类?
- 21. OCaml中的“`”是什么?
- 22. 动态扩展形状
- 23. Firefox扩展:共享状态
- 24. 确定扩展状态
- 25. 使用ocamlbuild在Camlp4中使用OCaml语法扩展
- 26. OCaml中的状态monad
- 27. asp.net的C#扩展,放置扩展文件的标准做法是什么?
- 28. 什么是Hack编程语言的文件扩展名?
- 29. 什么是MySQL扩展插入语句的记录限制?
- 30. 在sapui5的oData调用中进行第二次扩展的语法是什么?