Я читаю Simple-Lambda в elisp docs с примером
#+begin_src emacs-lisp :session sicp :lexical t
(funcall (lambda (a b c) (+ a b c))
1 (* 2 3) (- 5 4))
#+end_src
#+RESULTS:
: 8
ниже работает также
#+begin_src emacs-lisp :session sicp :lexical t
((lambda (a b c) (+ a b c))
1 (* 2 3) (- 5 4))
#+end_src
#+RESULTS:
: 8
Это смутило меня, elispстиль lisp-2, поэтому при оценке (lambda (a b c) (+ a b c))
интерпретатор будет искать в ячейке блока для определения объекта, и, следовательно, демонстрация документа имеет смысл вызвать funcall
(funcall (lambda (a b c) (+ a b c))
1 (* 2 3) (- 5 4))
Тем не менее, он работает безfuncall?
((lambda (a b c) (+ a b c))
1 (* 2 3) (- 5 4))
Кроме того, лямбда не имеет самооценочных форм
Обычно в Лисп-коде пишут числа, символы, строки и даже векторы, используя преимуществао том, что они самооценки.