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

我确信我很高兴最终有一种强大的语言与主流的GUI /数据库/通信框架紧密相连。

我不知道该在哪里发布,但这里似乎是最好的选择。

我需要使用Unicode符号字符作为运算符或函数名称。 我喜欢语法糖,但我不需要它。

Guy Steele在ACM的Communications中指出,“*”是一个强制的选择,当它从Ascii被采用的时候是成倍增长的,但是我的软件是以Unicode编码的,所以我不再受到Ascii的束缚。

!$%&* + - / <=>,@ ^ |〜?

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

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

考虑逻辑学家,数学家,物理学家等领域特定的需求。我宁愿使用数学符号编写一个象征性的差异因子或集成者,而不是已经采用的算子的Ascii排列。

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

    编译一个采用Unicode运算符F#源代码并将其逐行映射到Ascii运算符F#源代码的翻译器是很简单的。

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

    运营商和转换它们是微不足道的。 但是,我如何确保翻译是编译的内容,而程序员看到他们自己的源代码? 如果我正确地绘制了线条对线,我如何确保它们仍然可以指向一个变量并查看其值?


    Visual Studio库中提供了F#的数学(Unicode)符号扩展。

    这使您可以定义Unicode符号,例如:

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

    您可能会对Project Fortress感兴趣,它是一种新的函数式编程语言,包含Unicode字符集(以及许多其他功能)。 具体来说,请参阅包含一些示例代码的Fortress页面中的数学语法。


    有关此检查的有趣讨论:http://cs.hubfs.net/forums/thread/9690.aspx

    链接地址: http://www.djcxy.com/p/72807.html

    上一篇: If Ascii operators are definable, why not Unicode Symbols?

    下一篇: resources within a project directory targeting python 2.5.1