スペシャルオペレータ
Special Operator
Common Lispの一般的な評価戦略に従わないオペレータのこと
e.g. setq
(setq x 100)とするとシンボルxの値フィールドに100を代入できるが,xが未定義でも動作する
一般的な評価戦略によれば,xを評価しようとするが未定義のため失敗するはず
一般的な評価戦略で実装できないオペレータを実装するためにこのような仕組みが存在する
e.g. if
(if t t (error "ERROR"))としても(error)は評価されない
一般的な評価戦略によれば,全ての項は評価されるはず
一般的な評価戦略ではifフォームを定義することができないので,ifはスペシャルオペレータである
スペシャルオペレータの例
setq
defun
let
if