【发布时间】:2014-06-18 06:48:11
【问题描述】:
Haskell 等语言允许您创建自己的运算符。以下答案解释了运算符中允许使用哪些标点符号:https://stackoverflow.com/a/10548541/783743
另一方面,JavaScript 等语言不允许您在变量名中使用标点符号($ 旁边)。 [1]
我正在编写一个编译器,它将 Haskell 的一个子集编译为 JavaScript,但我不知道如何将运算符转换为有效的 JavaScript 标识符。
因此我决定将每个标点符号映射到一个基本的拉丁小写字母(即a-z)。例如:
& = a
| = l
@ = q
然而,与其自己决定字符映射,我首先想知道是否其他人已经做过同样的事情,或者是否有一个标准来决定如何映射它们。
我意识到这个问题可能主要基于意见(由于某种原因在 StackOverflow 上是严格禁止的)。因此,我只是在寻找明确说明“这是这样做的方法”(可能带有链接)的规范答案。如果您想发表意见,那么您可以在 cmets 中进行。
目前我希望将 19 个字符映射到字母表:
! # $ % & * + . / < = > ? @ \ ^ | - ~
虽然$ 是 JavaScript 中标识符的有效字符,但也可以将其映射到字母表。
[1] 属性名称可以包含特殊字符,但这是一个丑陋的 hack。
【问题讨论】:
-
问题是:你希望你的 js 代码是人类可读的吗?
-
@didierc 在我看来
True.aa(True)比True["&&"](True)更易于阅读。后一种情况更具描述性,但在我看来它看起来很丑。 -
我的意思是:如果你关心可读性,当然你会尝试坚持常用的习惯用法(使用方法而不是数组选择器),但如果你不这样做,那么它可能让你的生活更简单,无论哪种方式允许从 haskell 标识符直接映射到 js 标识符。
-
@didierc 是的,我确实希望生成的代码可读。我希望人们能够理解生成的代码并将其与他们的 JavaScript 应用程序集成。
标签: javascript haskell coding-style mapping ascii