9

この推奨の理由は何ですか?代わりにアンダースコアを使用する他のプログラミング言語との一貫性を維持しないのはなぜですか?

4

3 に答える 3

16

LISPは、「履歴」と「できるから」という2つの理由でハイフンを使用していると思います。

歴史

LISPは古い言語であり、初期の頃はアンダースコアを入力するのは難しいかもしれません。たとえば、私がLISPに使用した最初の端末は、ASR-33テレタイプでした。一部のホストおよびテレタイプモデルでは、アンダースコア文字のキーシーケンスは、左向きの矢印(Smalltalkの代入演算子)として解釈されます。ハイフンはより確実に入力できます。

あなたができるので

LISPには、中置演算子はありません(まあ、少数です)。x-1したがって、意味が「xマイナス1」であるか「xハイフン1」であるかについては、あいまいさはありません。初期のパイオニアは、マルチワードシンボルのハイフンの外観が好きでした(またはASR-33にも固執していました:)。

于 2011-02-04T17:28:21.197 に答える
11

推測ですが、英語の複合語(well-known、merry-go-roundなど)に似ているからかもしれません。ポールがコメントで言ったように、それは最も古い言語の 1 つであり、LISP の作成者にとってハイフンは、たとえばアンダースコアよりも自然に見えたかもしれません。

補足: 個人的には、単語を区切ると同時に長い識別子が全体として見えるため、これが好きです ( と を比較してfooBarBazくださいfoo-bar-baz) foo_bar_baz

于 2011-02-04T16:43:42.543 に答える
6

書かれた自然言語では、複合語を作成する方法として - 記号がよく使用されます。たとえばドイツ語では、ドイツ語の名詞を追加するだけで構成できます。

Hofbräuhaus

上は3つの部分で構成されています:Hof bräu haus。

しかし、ドイツ語で外国語の名前を一部に持つ概念を書く場合、次のように書きます。

Mubarak-Regime

自然言語では、CamelCase や Under_Score で単語を構成することは一般的ではありません。

ほとんどの Lisp の設計は、言語の伝統をより重視していました。一部の言語ではアンダースコアを使用するという慣例が生まれました。これらの言語では、- 記号がマイナス演算に既に使用されており、論文の識別子に - 記号を含めることが許可されていなかったからです。- 記号は、これらの言語の識別子終了文字です。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 に答える