ラムダ式::CommonLisp

;; xの2乗の計算
(lambda (x) (* x x))

(lambda 引数リスト . 関数本体)
という形のリストはそのままで関数実体。

(defun fn args . body)
は,
(cons 'lambda (cons args body))
と計算しておいて,それをfnの関数実体の箱に(Lispポインタとして)入れる。

λ式:lambdaで始まるリストで表される関数実体。
一番重要なポイントは,関数の概念から,名前を省いたこと。
関数と言えば,対応する呼び名があると思うが,
ラムダ式には固有の名前がない。

(lambda (x) (* x x))
には,1個の引数を取って,それの2乗を計算するという情報以上はない。
defunはこうやって定義された無名の関数に,
名前を与えるための仕掛けでしかない。
そのことがはっきり分かる形で
(define square (lambda (x) (* x x)))
と書く流儀のLispもある。
最終更新:2011年09月06日 14:27