两者(funcall(lambda和(lambda都起作用)>

问题描述 投票:0回答:1

我正在用示例阅读elisp文档中的Simple-Lambda

#+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))

另外,lambda不是自评估形式

通常写数字,字符,字符串,甚至是向量在Lisp代码中,利用了他们自我评估的事实。

[我正在用示例#+ begin_src emacs-lisp:session sicp:lexical t阅读elisp文档中的Simple-Lambda(funcall(lambda(abc)(+ abc))1(* 2 3)(-5 4)) #+ end_src#+ ...

elisp
1个回答
0
投票

Elisp对于直接调用lambda表单有特殊情况。

© www.soinside.com 2019 - 2024. All rights reserved.