12 unicode f# symbols localization operators
我确信我和很多人一起感到高兴,最终有一种强大的语言与主流的GUI /数据库/通信框架紧密相连.
我不确定在哪里发布,但这里似乎是最好的地方.
我需要使用Unicode符号字符作为运算符或函数名称.我喜欢语法糖,但我不需要它.
Guy Steele在ACM的通讯中指出,当从Ascii采用它时,"*"是一种强制选择,但我的软件在Unicode中运行,所以我不再受Ascii限制了.
!$%&*+ - /<=>,@ ^ |〜?
本地化的一部分包括本地程序员.为什么要限制可以在F#中定义的运算符集?它与C#和F#在标识符中接受许多Unicode IsLetter并不正交.
此外,F#很可能用于逻辑,数学,物理学家等问题的符号处理.如果直接映射到基本运算符的语言,它会使工作变得更容易.(F#和C#接受许多Unicode IsLetter?以及IsDigit'?这是允许Unicode IsSymbol的请求?作为具有优先权的运算符,例如*,或者,因为"+"既是一元和二元运算符,我可以忍受+的优先级,并用括号分组来弥补差异.
考虑逻辑学家,数学家,物理学家等领域特定的需求.我宁愿使用数学符号来编写符号微分器或积分器,而不是已经采用的算子的Ascii排列.
我用其他语言写了很多种语言,但由于F#是紧密的.Net集成,这个问题在没有语言支持的情况下提出了特殊的挑战:
使用Unicode-operator F#source并将其逐行映射到Ascii-operator F#source的转换器是一件很容易的事.
但是在调试时,我如何确保程序员仍然看到他们的未翻译源?并且他们可以看到变量值.
操作员和转换他们是微不足道的.但是,如果程序员看到自己的源代码,我如何确保翻译是编译的?如果我正确地逐行映射,我如何确保它们仍然可以指向变量并查看其值?