本当にlistだった。
最近気づいたことにWhileとかdotimesってマクロだったのかと。中身を見たら驚いた。list processorってのは嘘じゃなかった。読めないので何をしているのかよく分からないが、リストを駆使して動作を実現している様子。lispが他の言語と違うという理由が少し分かった気がする。なんとdefunまでマクロだったらしい。
(defmacro defun (name (&rest lambda-list) &body body) (multiple-value-bind (decl body) (find-declaration body) (multiple-value-bind (intr body) (find-interactive body) (let ((doc (find-documentation body))) `(let () ,(if doc `(si:*putprop ',name ,doc 'function-documentation)) (si:*fset ',name (si:*set-function-name #'(lambda ,lambda-list ,@decl ,@intr (block ,name ,@body)) ',name)))))))
関係ないが、良く出てくる@bodyとかいうのの@ってのは何だろう。