我相信我和许多人一样很高兴终于有了一种与主流 GUI/数据库/通信框架紧密相关的强大语言。
我不确定在哪里发布这个,但这里似乎是最好的地方。
我需要使用 Unicode 符号字符作为运算符或函数名称。我想要语法糖,但我不需要它。
Guy Steele 在 Communications of the ACM 中指出,“*”是从 Ascii 采用乘法时的强制选择,但我的软件在 Unicode 中工作,所以我不再受 Ascii 的束缚。
!$%&*+-./<=>?,@^|~:
本地化的一部分包括本地程序员。为什么要限制可以在 F# 中定义的运算符集?它与 C# 和 F# 在标识符中接受许多 Unicode IsLetter 并不正交。
此外,F# 很可能用于逻辑、数学、物理学家等问题的符号处理。如果直接映射到基本运算符的语言,它会使工作变得更加容易。(F# 和 C# 接受许多 Unicode IsLetter? 以及 IsDigit'?这是一个允许 Unicode IsSymbol 的请求?作为具有优先级的运算符,例如,*,或者,因为“+”既是一元运算符又是二元运算符,我可以忍受 + 的优先级,并用带括号的分组来弥补差异。
考虑逻辑学家、数学家、物理学家等特定领域的需求。我宁愿使用数学符号编写符号微分器或积分器,而不是已经采用的运算符的 Ascii 排列。
- 逻辑:∀∃⇒
- 数学:∑∫∂</li>
- 群论:≤ ≥ ∈ ∉</li>
- 集合论:⊆ ⊇ ⊃ ∪ ∩</li>
- 张量:⊗</li>
我用其他语言编写了许多语言,但由于 F# 与 .Net 紧密集成,因此在没有语言支持的情况下,这个问题带来了特殊挑战:
拼凑一个接受 Unicode 运算符 F# 源并将其逐行映射到 Ascii 运算符 F# 源的翻译器是微不足道的。
但是在调试时,我如何确保程序员仍然看到他们未翻译的源代码?他们可以看到变量值。
运算符和转换它们是微不足道的。但是我如何确保翻译是被编译的,而程序员看到他们自己的源代码?如果我正确地逐行映射,我如何确保它们仍然可以指向一个变量并看到它的值?