9

这个推荐的原因是什么?为什么不与其他使用下划线的编程语言保持一致?

4

3 回答 3

16

我认为 LISP 使用连字符有两个原因:“历史”和“因为你可以”。

历史

LISP 是一门古老的语言,在早期键入下划线可能具有挑战性。例如,我用于 LISP 的第一个终端是ASR-33 电传打字机。在某些主机和电传打字机型号上,下划线字符的键序列将被解释为向左箭头(Smalltalk 中的赋值运算符)。可以更可靠地键入连字符。

因为你能

在 LISP 中,没有中缀运算符(嗯,很少)。因此,对于是x-1指“x 减 1”还是“x 连字符 1”,没有歧义。早期的先驱者喜欢多字符号的连字符的外观(或者也被困在 ASR-33 上:)。

于 2011-02-04T17:28:21.197 回答
11

只是猜测:可能是因为它类似于英语的复合词(如“众所周知”、“旋转木马”等)。正如 Paul 在评论中所说,它是最古老的语言之一,对于 LISP 的创建者来说,连字符可能看起来比下划线更自然。

旁注:我个人确实喜欢它,因为它分隔了单词,但同时使长标识符看起来像一个整体(比较fooBarBazfoo-bar-bazfoo_bar_baz)。

于 2011-02-04T16:43:42.543 回答
6

在书面自然语言中, - 符号通常用作合成词的一种方式。例如,在德语中,我们只是通过附加它们来组成德语名词:

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

请注意,反斜杠是符号名称中的转义字符。

于 2011-02-05T10:48:43.357 回答