如果Ascii运算符是可定义的,为什么不使用Unicode符号?

如果Ascii运算符是可定义的,为什么不使用Unicode符号?,unicode,f#,operators,symbols,localization,Unicode,F#,Operators,Symbols,Localization,我相信我和许多人一样,很高兴终于有一种强大的语言与主流GUI/数据库/通信框架紧密相连 我不知道该在哪里发布,但这里似乎是最好的地方 我需要使用Unicode符号字符作为运算符或函数名。我想要糖,但我不需要 盖伊·斯蒂尔(Guy Steele)在《ACM通讯》(Communications of the ACM)中指出,当“*”作为乘法从Ascii中采用时,它是一个强制选择,但我的软件使用Unicode,所以我不再受Ascii的束缚 !$%&*+-./?,@^ | ~: 本地化的一部分包括本地程

我相信我和许多人一样,很高兴终于有一种强大的语言与主流GUI/数据库/通信框架紧密相连

我不知道该在哪里发布,但这里似乎是最好的地方

我需要使用Unicode符号字符作为运算符或函数名。我想要糖,但我不需要

盖伊·斯蒂尔(Guy Steele)在《ACM通讯》(Communications of the ACM)中指出,当“*”作为乘法从Ascii中采用时,它是一个强制选择,但我的软件使用Unicode,所以我不再受Ascii的束缚

!$%&*+-./?,@^ | ~:

本地化的一部分包括本地程序员。为什么要限制可以在F#中定义的运算符集?它与C#和F#在标识符中接受许多Unicode标准并不正交

此外,F#很可能被用于逻辑、数学、物理学家等问题的符号处理。如果能直接映射到基本算子的语言中,工作就会容易得多。(F#和C#接受许多Unicode Isleter?以及IsDigit’?这是一个允许Unicode IsSymbol?作为优先级为*的运算符的请求,或者,由于“+”既是一元运算符又是二元运算符,我可以容忍+的优先级,并用括号分组来弥补差异

考虑到逻辑学家、数学家、物理学家等特定领域的需求,我更愿意使用数学符号编写符号微分器或积分器,而不是已经使用的运算符的Ascii置换

  • 逻辑:∀ ∃ ⇒
  • 数学:∑ ∫ ∂
  • 群论:≤ ≥ ∈ ∉
  • 集合论:⊆ ⊇ ⊃ ∪ ∩
  • 张量:⊗
我用其他语言编写过许多语言,但由于F#与.Net紧密集成,因此在没有语言支持的情况下,这一问题带来了特殊的挑战:

拼凑一个转换器,它接受Unicode运算符F#source并将其逐行映射到Ascii运算符F#source,这很简单

但是,在调试时,我如何确保程序员仍然可以看到未翻译的源代码?并且他们可以看到变量值


运算符并将其转换是很简单的。但如何确保转换是编译的,而程序员可以看到自己的源代码?如果我正确地逐行映射,如何确保他们仍然可以指向变量并查看其值?

其他语言,如Scala,确实允许来自ASCII范围之外的运算符—mathema垂直符号(Sm)和其他符号(So)

您可能会感兴趣的是,哪种新的函数式编程语言包含Unicode字符集(以及许多其他功能)。特别是,请参阅包含一些示例代码的页面。

有关此检查的有趣讨论:

有一个数学(Unicode)中提供了F#的符号扩展

这允许您定义Unicode符号,例如:

let inline (~∑) xs = xs |> Seq.sum

let total = ∑myList

我添加了f#标签,但要这样做,我必须去掉数学标签。我认为这是一个公平的交易(这里的核心问题是f#人们现在可能关心的事情,而不是数学家需要思考的事情)另外,我的兴趣在F.Y.S.中很强,因为.NET可以用来创建任何不需要C++性能的应用程序。Project堡垒听起来很有意思。谢谢。这个项目似乎已经停止了。这个答案重复了布瑞恩的评论。