2008年10月23日木曜日

とりあえず「特殊」だということは分かった

CLのスペシャルに秘められた罠(?)」より

関係あるっぽい記述を見つけたのでメモ。

SPECIAL-OPERATOR-P - CLHS

Notes:

Historically, this function was called special-form-p. The name was finally declared a misnomer and changed, since it returned true for special operators, not special forms.

注意: (適当訳) 古くから、この関数は special-form-p と呼ばれていた。 この関数はスペシャル・フォーム(リスト)でなく、スペシャル・オペレータ(シンボル)が与えられる場合に真を返すことから、この名前は最終的に誤った名前であると認められ改定された。

仕様を決めていた中の人も勘違いしていたようで。

しかしなぜ勘違いしたのか、なぜ長い間改定がなかったのかは、気になる。 CLtL2 には special-form-p しかないなあ。ANSI-CL で変更されたのかな。

ちなみに xyzzy でも special-form-p しかないのでサクッと定義。 もちろん LISP パッケージの中ですよ、奥さん。

(in-package :lisp)

(export '(special-operator-p))

(defun special-operator-p (symbol)
  "Returns true if symbol is a special operator,
otherwise, returns false."
  (special-form-p symbol))

0 件のコメント:

コメントを投稿