在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 PPXes是否可以返回要由其他PPX擴展解析的擴展?
- 2. OCaml的頂層與語法擴展
- 3. 使用PPX和擴展點
- 4. 什麼是擴展方法?
- 5. 這ocaml語法是什麼意思?
- 6. Javascript語言的狀態是什麼?
- 7. 什麼是file.sc的擴展
- 8. Haskell的擴展是什麼?
- 9. Class <?的語法是什麼?在kotlin中擴展class_name>?
- 10. request.referer方法的狀態是什麼?
- 11. 什麼是擴展語言?例如:python可以用作擴展語言
- 12. 爲什麼Stream.CopyTo不是擴展方法?
- 13. MEF爲什麼ComposePart是擴展方法?
- 14. AjaxControlToolkit - 擴展 - 什麼是「當前」方法?
- 15. Qt:Windows 7任務欄擴展支持的當前狀態是什麼?
- 16. ngrx/strore示例應用程序,爲什麼子狀態擴展了根狀態?
- 17. 靜態函數的語法是什麼?
- 18. 類擴展的語法是否更改?
- 19. 爲什麼動態類型的擴展方法無法解決?
- 20. 什麼是.tt擴展?
- 21. 什麼是擴展類?
- 22. 什麼是標記擴展?
- 23. OCaml中的「`」是什麼?
- 24. 阿卡擴展的目的是什麼?
- 25. 確定擴展狀態
- 26. Firefox擴展:共享狀態
- 27. 動態擴展形狀
- 28. 使用ocamlbuild在Camlp4中使用OCaml語法擴展
- 29. asp.net的C#擴展,放置擴展文件的標準做法是什麼?
- 30. OCaml中的狀態monad