我想用标识符中的Unicode字符(非拉丁文)在Haskell中编写一些教育代码。 (这样标识符对于非英文自然语言的演讲者来说看起来很好,很自然,因为在写作中不使用拉丁字符)。所以,我着手寻找适当的Haskell实现来实现这一点。在何处指定是否允许在Haskell实现中使用Unicode标识符?
但如果是这个功能在语言规范中规定?在寻找合适的实现时,我将如何引用此功能? (和已知哈斯克尔implemenations实际支持Unicode标识符?)
原来,一个Haskell的实现没有接受我使用Unicode识别码,而另一个没有接受它。如果有一种方法可以将我的代码的这种需求正式化,我可能会希望它以语言功能开关的形式出现,这样,如果我或其他人试图运行我的代码,立刻就会清楚他的实现是否缺失所需的功能,因此他应该寻找另一个。 (这个功能也可能有一个wiki页面 - “Unicode标识符”,它将列出哪些现有的实现支持它,以便人们知道如果需要它可以去哪里。)
(顺便说一句,我已经在这个问题上加了一个“语法”标签,但我实际上认为它是一个lexing级别的问题,这个级别比语言的语法级别要低。这里是否有标签的lexing级别的特征标签?语言,而不是语言的语法规范的特征?)
至于最后一段:它是语法的一部分。它可能不是语法的一部分,但标记化和解析之间的区别仅在实践中存在。还有一些系统(例如Parsing Expression Grammars)可以跳过标记化步骤并迎合实际的源代码。我的实验 – delnan 2011-04-01 18:48:03
详情:GHC-6.10.4- [ALT2(http://prometheus.altlinux.org/en/5.1/srpms/ghc)(IIRC)不接受统一标识,GHC-6.12.3- ALT4和GHC-7.0.1- [ALT1(http://prometheus.altlinux.org/en/Sisyphus/srpms/ghc)允许使用Unicode的标识符,并且hugs98-20060921- [alt5](HTTP://prometheus.altlinux .org/en/5.1/srpms/hugs98)不允许使用Unicode标识符(这是不幸的,因为我认为它可能比ghc更好,因为它更简单,也许更简单的错误消息)。 – 2011-04-01 18:53:13
更多有关Unicode ID的相关实验:啊,我也尝试了curry-0.9.11(因为我可能想用Curry“extensions”展示一些代码):这个Muenster Curry Compiler不允许Unicode标识符(IIRC) 。 – 2011-04-01 19:01:55