9

我想用标识符中的 Unicode 字符(非拉丁语)在 Haskell 中编写一些教育代码。(这样对于说英语以外的自然语言的人来说,标识符看起来既漂亮又自然,在其写作中没有使用拉丁字符。)因此,我开始寻找一个合适的 Haskell 实现来实现这一点。

但是语言规范中在哪里指定了此功能?在寻找符合要求的实现时,我将如何引用此功能?(已知哪些 Haskell 实现实际上支持 Unicode 标识符?)

事实证明,一个 Haskell 实现确实接受了我的带有 Unicode 标识符的代码,而另一个没有接受它。如果有一种方法可以形式化我的代码的这种要求,我希望它可能以语言功能切换的形式,这样如果我或其他人尝试运行我的代码,就会立即清楚他的实现是否丢失所需的功能,因此他应该寻找另一个。(这个特性也可能有一个 wiki 页面——“Unicode 标识符”,它会列出哪些现有实现支持它,这样如果需要它,人们就会知道去哪里。)

(顺便说一句,我在这个问题上加了一个“语法”标签,但我实际上认为这是词法水平的问题,比语言的语法低。这里有一个标签来表示词法的特征一种语言的水平,而不是一种语言的语法规范的特征?)

4

1 回答 1

10

在线报告在Lexemes下记录了这一点。它还很早就注意到“Haskell 使用 Unicode 字符集。但是,源程序目前偏向于 Haskell 早期版本中使用的 ASCII 字符集。”。

实际的编译器可能支持也可能不支持 Unicode 标识符。GHC 可以,但您需要记住,Unicode 代码点必须遵守与 ASCII 字符相同的规则:类型必须以分类为大写或标题大小写的代码点开头,变量为小写(尽管事实上这已放松为字母而不是大写/大写;这可能值得向语言委员会要求澄清),运算符必须是标点符号或符号。(这意味着你不能用阿拉伯语声明类型,例如,除非你在它们前面加上一些其他脚本中的大写/标题字符。)

至于收集 Unicode 支持信息:虽然我不知道提供它的单个页面,但"unicode"Haskell Wiki上搜索可以找到许多 Haskell 编译器中有关 Unicode 支持的信息。

于 2011-04-01T18:58:37.583 回答