C'è stata una proposta da Alain Frisch of Lexifi over a year ago for an alternative to camlp4 for writing sytnax extensions making use of the -ppx flag aggiunta in OCaml 4.00. A quel tempo ha detto che c'era ancora del lavoro da fare (attributi, citazioni, ecc.) Ma che era già abbastanza usabile. OCaml 4.01 ha migliorato il supporto per questo stile di scrittura delle estensioni della sintassi? Qualcuno sta usando questo meccanismo ora invece di camlp4 o è ancora camlp4 il modo consigliato per scrivere le estensioni di sintassi per OCaml?Qual è lo stato delle estensioni della sintassi di -ppx per OCaml?
risposta
Il lavoro su "(attributi, citazioni, ecc.)" È stato eseguito da Alain sotto forma di un ramo delle origini del compilatore OCaml, denominato estensione-punti. I progressi su questo ramo sono stati ampiamente discussi sulla mailing list pubblica wg-camlp4, ma non sono stati integrati in 4.01. Dal rilascio di 4.01, è stato integrato nel trunk (il ramo di sviluppo di riferimento del compilatore), quindi dovrebbe essere disponibile per 4.02 (si noti che le versioni principali tendono ad essere rilasciate ogni anno).
Alain conserva una documentazione per i punti di estensione in trunk/experimental/frisch/extension_points.txt. Chiaramente non copre tutti i i casi d'uso di Camlp4, ma ancora una grande parte di essi. Se preferiresti usarlo è una decisione personale da prendere; la promessa è che la sintassi un po 'più scomoda consente di semplificare la distribuzione e l'interoperabilità con strumenti e altre estensioni.
A partire da 4.00 o 4.01, -ppx
non è adatto per l'estensione della sintassi, è possibile elaborare (e possibilmente filtrare/trasformare) codice OCaml valido sintatticamente. È tecnicamente possibile sovvertire la sintassi OCaml esistente per aggiungere nuovi significati, ma mi sento di raccomandare contro questo. Dovresti invece aspettare 4.02 se vuoi usarlo per l'estensione della sintassi.
- 1. OCaml toplevel con le estensioni di sintassi
- 2. Qual è la "sintassi rivista" in OCaml?
- 3. Qt: qual è lo stato corrente del supporto per le estensioni della barra delle applicazioni di Windows 7?
- 4. Qual è lo stato della lingua Javascript?
- 5. Scrivere un parser per un DSL in OCaml con PPX e l'estensione punto
- 6. Qual è lo stato corrente delle librerie standard D?
- 7. Qual è lo stato di CAT.NET?
- 8. Qual è lo stato corrente delle monadi limitate?
- 9. Qual è lo scopo di Lazy.lazy_from_val di OCaml?
- 10. Qual è lo stato corrente di PocoCapsule?
- 11. Qual è lo stato di Spring.Net?
- 12. Qual è lo stato di JMX 2.0?
- 13. Qual è lo stato di PHPDoc?
- 14. Qual è lo stato attuale della comunità PHP?
- 15. Qual è lo stato corrente della specifica Cookie2?
- 16. Qual è lo stato della libreria del filesystem C++ TR2?
- 17. Qual è lo scopo della struttura delle bandiere in iOS?
- 18. Qual è lo stato corrente del biocode?
- 19. Qual è lo stato corrente del supporto per il test delle unità in linguaggio R
- 20. Qual è la sintassi completa delle espressioni GPath di Groovy?
- 21. Qual è lo stato di sviluppo di SignalR 3?
- 22. JQuery - Qual è lo scopo di questa sintassi $ (function() {...});
- 23. Qual è lo stato di Open Source Java?
- 24. Qual è lo scopo delle classi astratte?
- 25. è possibile riprodurre l'interpolazione delle stringhe di python in ocaml?
- 26. Qual è lo standard per la codifica delle immagini Docker?
- 27. Qual è lo scopo delle classi interne della navbar e della barra di navigazione?
- 28. Qual è lo stato di sviluppo delle app iOS in Linux?
- 29. Rimozione delle autorizzazioni delle estensioni
- 30. Qual è lo stato corrente di C++ AMP