这个推荐的原因是什么?为什么不与其他使用下划线的编程语言保持一致?
3 回答
我认为 LISP 使用连字符有两个原因:“历史”和“因为你可以”。
历史
LISP 是一门古老的语言,在早期键入下划线可能具有挑战性。例如,我用于 LISP 的第一个终端是ASR-33 电传打字机。在某些主机和电传打字机型号上,下划线字符的键序列将被解释为向左箭头(Smalltalk 中的赋值运算符)。可以更可靠地键入连字符。
因为你能
在 LISP 中,没有中缀运算符(嗯,很少)。因此,对于是x-1
指“x 减 1”还是“x 连字符 1”,没有歧义。早期的先驱者喜欢多字符号的连字符的外观(或者也被困在 ASR-33 上:)。
只是猜测:可能是因为它类似于英语的复合词(如“众所周知”、“旋转木马”等)。正如 Paul 在评论中所说,它是最古老的语言之一,对于 LISP 的创建者来说,连字符可能看起来比下划线更自然。
旁注:我个人确实喜欢它,因为它分隔了单词,但同时使长标识符看起来像一个整体(比较fooBarBaz
,foo-bar-baz
和foo_bar_baz
)。
在书面自然语言中, - 符号通常用作合成词的一种方式。例如,在德语中,我们只是通过附加它们来组成德语名词:
Hofbräuhaus
以上由三部分组成:Hof bräu haus。
但是,当我们用德语写出以外国名称为部分的概念时,我们会这样写:
Mubarak-Regime
在自然语言中,用 CamelCase 或 Under_Score 组成单词并不常见。
大多数 Lisps 的设计更倾向于语言传统。在某些语言中出现了使用下划线的约定,因为在这些语言中,减号操作已经采用 - 符号,并且这些标识符不允许包含 - 符号。- 符号是这些语言中的标识符终止字符。不在 Lisp 中。
请注意,尽管可以在 Lisp 标识符中使用下划线,但出于审美原因,这在代码中很少使用。
还可以使用标识符中的每个字符。竖线包含一个任意符号:
|this *@^! symbol is valid - why is that po_ss_ib_le?|
> (defun |this *@^! symbol is valid - why is that po_ss_ib_le?| (|what? really?|)
(+ |what? really?| 42))
|this *@^! symbol is valid - why is that po_ss_ib_le?|
> (|this *@^! symbol is valid - why is that po_ss_ib_le?| 42)
84
请注意,反斜杠是符号名称中的转义字符。