OCaml中的“revised syntax”是什么?

11

当人们提到OCaml中的“修订语法”时,他们是指这将成为该语言的新语法,还是仅仅是CamlP4中创建的替代语法?如果是前者,则“修订语法”何时成为OCaml的“官方语法”?

当人们提到OCaml中的“修订语法”时,通常是指一个名为Revised Syntax的独立语法。这个语法在OCaml 4.00版本中首次引入,是OCaml的官方语法之一。因此,“修订语法”已经成为OCaml官方支持的语法之一。需要注意的是,“修订语法”并非CamlP4中的一种替代语法,而是OCaml的一种主要语法。
2个回答

11
经过修订的语法只是原始语法的一种替代方案,它在Camlp4/5中得到实现(也有一个在Camlp5中编写的Lisp语法)。有些人喜欢它,但我不建议您使用它,因为它很可能会使其他OCaml程序员对您的代码更加困惑。在撰写Camlp4/5扩展时,了解修改后的语法是有价值的---因为该语法用于模式和重写,这可能是因为它比原始语法更一致。

据我所知,没有计划用修订后的语法取代原始的OCaml语法。


2
但我会劝阻您使用它,因为这很可能会使其他OCaml程序员更加困惑。哈哈,那么你最好不要使用OCaml,因为它会让更多的人感到困惑 :))。无论如何,您可以使用原始语法编写引用,但有些情况下无法用原始语法表达,因此修订版通常更受欢迎。至于通常的编程-修订版语法在逻辑上更合理,对新手来说更容易(毕竟这就是它存在的原因)-没有原始语法的许多歧义。 - ygrek
8
ygrek,我不会表示哪种语法更好。但我认为像OCaml这样的小到中型社区应该努力避免在方言上分裂。 - Chris Conway
3
反对采用修改后的语法的另一个观点是:编辑器支持较差。据我所知,Tuareg和Vim的OCaml工具都不支持它。 - Michael Ekstrand
1
我没有认真地研究OCaml的唯一原因是因为那种愚蠢古老的语法。得了吧,;;? - iphone007

3

这只是一种可选的具体语法。我认为这只是为了展示camlP4有多么强大,一种概念验证。


这不是一个概念验证 - 它涵盖了原始语言的所有功能。 - ygrek
1
这只是一个概念的证明,即您可以拥有多个具体语法。那就是我的意思...因为我认为很少有人实际使用修订后的语法。 - LB40

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接