Posted 2021-12-14 19:39:20 GMT
Lisp一人 Advent Calendar 2021 15日目の記事です。
Lispのシンボル名では、単語の繋ぎとして-
が多用されていることはご存知のとおりですが、他の言語では良く使われる_
がLispでは使われない理由は良く分かりません。
_
より読み易い-
が使えるから、というのも理由にはなると思いますが、極初期のLisp Machine Lispでは、_
で単語を繋いだりもしたようです。
GET_PNAME <symbol> [QFCTNS]This works, but GET-PNAME is preferred.
MAKE_ATOM &REST <args> [QFCTNS]This works, but MAKE-ATOM is preferred.
などですが、すぐに非推奨となり-
に置き換えられたりはしたようではあります。
_
のコードが確定していなかった?そんな_
ですが、先日マッカーシー先生のHistory of Lisp(1978)の原稿をSaildartで発見したので眺めていたところ、ヒューイット先生からのメール経由でのレビューも発見しました。
このメールの中で、ヒューイット先生はメッセージ送信形式のevalというものを紹介しているのですが、
(defun lexical←apply (procedure arguments expression)
...
のように単語の繋ぎに←
を使っています。
これは、メッセージ送信だからかとも思ったのですが、SAILの文字コードは結構特殊なため、元の文字コード確認してみたところ、ASCIIやMITでは、_
が、8進で#o137
ですが、SAIL、CMU、ISIでは、文字コード#o137
は、←
のようなのです。
つまりヒューイット先生は、MITからのメールで
(defun lexical_apply (procedure arguments expression)
...
とアンダーバー繋ぎで書いていたけれど、SAILの環境では←
と表示されてしまうのではないかと推測されます(もしくはデータ復元の際にSAILコードとして復元された)
1977年当時はまだ-
繋ぎも確立する程でもなかったので、_
が使われたと考えると、『_
は1970年代のLisp社会では、環境依存文字だったのに対し、-
はどの環境でも統一されていたから好まれた』説を提唱したいところです。
ちなみに、Interlisp方面では、-
繋ぎではなく、代りに.
繋ぎが良く使われました。
これも謎ですが、clispという自然言語風記法で1+x
、1-x
と記述できたため、曖昧さを避けて、lexical.apply
のように記述することにしたのかなと想像しています。
■
HTML generated by 3bmd in LispWorks 7.0.0