lambdaの役目
lambdaってのはオペレータではなくただのシンボルで,それはリストが関数であるかどうかを見分けるために,昔のLispの方言で使用されていたものだそうで.
> (lambda (x) (+ x 1)) #<FUNCTION :LAMBDA (X) (+ X 1)>
んで,関数を定義するdefunは,マクロ.ということは?
> (setf a (lambda (x) (+ x 1))) #<FUNCTION :LAMBDA (X) (+ X 1)>
こんな感じに,変数にlambdaを入れちゃったら関数として呼び出したりできるのかしら,と思ったのだけれど,
> (a 1) *** - EVAL: undefined function A The following restarts are available: ……
とまぁこのようにエラー表示が.そんな生易しいもんじゃない*1.思い出してみると,Common Lispでは変数名と関数名は,別々のテーブルが所持してるんだよね.だから,aはただの変数でしかないわけで,関数っぽく呼び出したかったらfuncallやapplyに頼らなきゃダメなんだなぁ.
> (funcall a 1) 2 > (apply a '(1)) 2
Schemeなら変数名と関数名は同じところで持ってるし,呼び出せたりするのかしら?処理系が無いから解んないけど.