哈斯克尔报告中一个不起眼的角落

Haskell 2010报告的第5.2节涉及模块导出列表。 它曾说过:

出口清单中的实体可以命名如下:

  • 无论是在模块主体中声明还是导入,值,字段名称或类方法都可以通过将值的名称作为qvarid进行命名,该值必须在作用域中。 运算符应该用括号括起来以将它们变成qvarids。
  • ...

    但是,呃...我错过了什么? 因为根据第10章中的语法参考:

    qvarid→[monid。 ] varid

    varid→(small {small | large | digit |'})

    那么在哪个宇宙中将括号中的运算符变成了一个qvarid? 它看起来像一个运营商显然是一个varsym(或可能qvarsym)。

    有人知道这里发生了什么吗? 我的意思是,显然Haskell明确支持在输出列表中编写运算符,但报告中的语法描述似乎没有意义。


    等待,等待......根据第10.5节中给出的无控制语法:

    导出→qvar | qtycon ... | qtycls ... | module monid

    ...

    var→varid | ( varsym )

    qvar→qvarid | ( qvarsym )

    所以它似乎不是一个qvarid,它应该是一个qvar。 所以这只是一个错字,我猜? 有没有在官方报告中修正这些问题的流程?

    链接地址: http://www.djcxy.com/p/87451.html

    上一篇: An obscure corner of the Haskell Report

    下一篇: Having a Kafka Consumer read a single message at a time