函数名称等中允许使用哪些字符?

And*_*ren 5 elm

正如标题所说,标识符(函数、变量和记录字段名称)中允许使用哪些字符?aöø一切似乎都很好,'_9如果不是第一个字符也是如此。<$;%不要。它是否在某处记录了哪些范围/块的 unicode 字符和符号是允许的?

后续问题:中缀运算符中允许使用哪些字符?

And*_*ren 4

因此,在阅读了Haskell 规范(可以假设它影响了 Elm)、JavaScript 规范以及反复试验之后,我得出了以下规则:

  • 标识符必须以 unicode 类别中的字符开头:
    • 大写字母 (Lu)(模块、类型)
    • 小写字母 (Ll)(函数、变量)
    • 标题大写字母 (Lt)(模块、类型)
  • 其余字符必须属于以下任一类别:
    • 大写字母 (Lu)
    • 小写字母 (Ll)
    • 标题字母 (Lt)
    • 修饰符字母 (Lm)
    • 其他字母(Lo)
    • 小数位数 (Nd)
    • 字母编号 (Nl)
    • 或者是_(模块名称除外)。

从技术上讲,“其他数字”(否)似乎在 Elm 中也有效,但在编译为 JavaScript 后会崩溃。

我使用这个工具来获取每个类别的范围。