它是On Lisp中经常使用的一种技术,它位于Common Lisp上:
> (mapcar #'(lambda (x) (+ x 10))
'(1 2 3))
(11 12 13)
Run Code Online (Sandbox Code Playgroud)
为什么需要锐利报价甚至可能?lambda表达式返回函数对象,而尖锐的引用从名称返回函数对象.我也听说过关于lambda表达式是否是名称的矛盾信息 - 特别是On Lisp与标准相矛盾,但是他的代码似乎也与标准相矛盾.
在elisp中,似乎根本不需要它.令我惊讶的是,这里没有讨论词法范围,因此不清楚为什么它应该与Common Lisp完全不同.但是这个答案说不带引号的lambda表达式没有任何意义,因此,具有讽刺意味的是,有可能引入不带引号的lambda表达式作为引用的语法糖.但这与elisp手册中的声明相矛盾,即"在Emacs Lisp中,这样的列表是一个有效的表达式,可以计算出一个函数对象."
这个问题被标记为普通和e-lisp,因为我试图理解两者的理论模型,并通过了解它们的差异来学习它们.(更实际的是,我正在尝试学习elisp,但在Common Lisp上找到了很多很好的资源,所以我很想学习它们).
对我来说,这些运营商似乎做了同样的事情.两者都采用符号并返回与之关联的函数.有什么区别吗?
elisp 评估返回以下内容:
(defun foo(x)(+ 1 x))
foo
(foo 3)
4
#'foo
我也不明白.
常见的lisp和elisp有区别吗?我正在从中学习资源.