by shigemk2

当面は技術的なことしか書かない

lambda とシングルクオート

Emacs Lisp

lambda とは、匿名関数(lambda で始まる関数)のこと。

lambda はクオートする必要がない。
なぜなら、subr.el で lambda は (function (lambda )) を返すマクロとして定義されているから。

(defmacro lambda (&rest cdr)
  (list 'function (cons 'lambda cdr)))

(macroexpand '(lambda (x) (+ x 2)))(function (lambda (x) (+ x 2)))

lambda はクオートしないのが、記述量が少なく、
function に展開されて byte compile の効率も上がるので、
ベターな記述方法だから。