<cl> (special-form-p 'car) NIL <cl> (special-form-p 'if) #<function object IF (a special) @ #x3be116> <cl> (special-form-p 'and) #<function object AND (a special) @ #x3be13e> <cl> (special-form-p 'cond) #<function object COND (a special) @ #x3be1b6> <cl> (special-form-p 'setq) #<function object SETQ (a special) @ #x3be206> <cl> (special-form-p 'set) NIL <cl> (setq x 10) 10 <cl> (set 'x 10) 10cond は Common Lispではスペシャルフォームではなく,マク ロで定義するという仕様になっていますが,aclでは,スペシャルフォームと して定義しています. setqは第一引数にくる変数を評価しないためにスペシャルフォームとして 定義されています.第一引数を評価するものとして set 関数があります. 同様にスペシャルフォームではないですが,第一引数に変数だけでなく, 配列の要素などを指定できるsetfマクロもあります.