我正在研究通用编程语言。除了字符串和标识符中对Unicode支持的现代要求之外,我正在考虑提供一些运算符的替代拼写,特别是:
≤
≥
≠
{/ p>
<=
>=
!=
按位和按位(∩
∪
&
|
∧
∨
¬
&&
||
!
箭头→
⇒
->
=>
}
我知道APL和Fortress使用特殊字符 - 而前者通常是关于它的笑话 - 但这些都非常适合学术和科学用途。特殊人物在现代的非学术语言中是否有任何地方?
答案 0 :(得分:7)
特殊人物在现代的非学术语言中占有一席之地吗?
是的, 但是,因为在大多数桌面上,对特殊字符的支持仍然是糟糕的(编辑错误,字体不好,你可以命名) ,
我永远不会提倡预处理器:有太多诱惑和滥用的空间,除非经过非常仔细的处理,否则预处理器会让很多难以编写好的IDE和静态分析工具
有些人喜欢后处理器,即一个漂亮的打印机,它接受ASCII字符序列并将它们呈现为其他东西。虽然我总是发现这种风格令人困惑,但它在一些Haskell程序员中非常受欢迎并且很成功。
答案 1 :(得分:4)
在我看来,他们在语言中没有位置,但绝对属于默认预处理器。您可能会遇到APL键盘问题。 (以及可能的视觉模糊性)。
作为前/后处理的有限示例将是cweaved代码。
答案 2 :(得分:3)
Isabelle(定理证明器)允许LaTeX样式的命令序列作为有效输入。各种前端然后做适当的事情把它们变成特殊的角色。这样做的好处是它仍然只是普通的ASCII文本,但你可以在一个知道这些字符的编辑器中看到所有漂亮的漂亮显示字符。
答案 3 :(得分:2)
这是一个有趣的概念,但您不担心同一事物的多个拼写会使解析代码变得更加困难,特别是对于IDE而言?更不用说教这些符号对新来的程序员意味着什么所需的额外时间?如果您支持unicode,因此可能支持其他语言(日语中的变量?),则会产生另一层难以理解的问题。另外,你发现它们的逻辑相反,C三字符(http://en.wikipedia.org/wiki/Digraphs_and_trigraphs#C)有多大用处? : - )
答案 4 :(得分:2)
特殊字符←
和⇒
是Scala中的保留字。 ←
用于引入生成器绑定,而⇒
用于函数定义,以将参数列表与函数体分开。
<强>示例:强>
for {
word ← List("Hello", "World")
character ← word
} println(character)
val square = (x: Int) ⇒ x * x
应该注意的是,Scala编译器还允许上述符号的ASCII替代(即<-
和=>
)。
答案 5 :(得分:2)
我使用的一种依赖于非ASCII字符的语言是TI-BASIC,它使用→
进行分配,≤
/ ≠
/ {{1} }用于比较,具有内置常量≥
和π
,ℯ
函数等。
在PC上,我怀疑我是否会使用非ASCII运算符,因为输入√
比在字符映射中查找!=
要快得多。
答案 6 :(得分:0)
我喜欢使用适当的角色的想法。但是,为了使用那么我真的想要一个带有额外标点符号键的键盘用于它们。虽然我们在这里,{ } ( ) " ? + *
之类的东西也应该都在他们自己的钥匙上。
答案 7 :(得分:0)
不确定是否使用通用语言,但这些语言在DSL中占有一席之地,因为它们是明智的。它当然可以用一些现代语言来完成。有关Scala中的示例,请参阅this blog post。