像Haskell这样的语言允许你创建自己的操作符。下面的答案解释了操作符中允许使用哪些标点符号:https://stackoverflow.com/a/10548541/783743
另一方面,像JavaScript这样的语言不允许在变量名中使用标点符号($
旁边)。<一口>[1]一口>我正在编写一个编译器,它将Haskell的一个子集编译为JavaScript,我不知道如何将操作符转换为有效的JavaScript标识符。
因此,我决定将每个标点字符映射到一个基本的拉丁小写字母(即a-z
)。例如:
& = a
| = l
@ = q
然而,与其自己决定字符映射,我首先想知道是否有人已经做了同样的事情,或者是否有一个标准来决定如何映射它们。
我意识到这个问题可能主要是基于意见的(出于某种原因,这在StackOverflow上是严格禁止的)。因此,我只寻找权威的答案,明确表示"这是这样做的"(也许有一个链接)。如果你想发表意见,你可以在评论中发表。
目前有19个字符,我希望映射到字母:
! # $ % & * + . / < = > ? @ ^ | - ~
虽然$
是JavaScript中标识符的有效字符,但将其映射到字母表也会很好。
[1]属性名可以有特殊字符,但这是一个丑陋的hack
Ghc使用他们所谓的z编码。例如,>>=
编码为zgzgze
。见https://ghc.haskell.org/trac/ghc/wiki/Commentary/Compiler/SymbolNames