CL-USER> (lambda (x) (+ x 10))
#<FUNCTION (LAMBDA (X)) {530321CB}>
CL-USER> #'(lambda (x) (+ x 10))
#<FUNCTION (LAMBDA (X)) {5303226B}>
然后为什么我在这里得到非法函数调用错误
CL-USER> (#'(lambda (x) (+ x 10)) 10)
此期间
CL-USER> ((lambda (x) (+ x 10)) 10) 20 (5 bits, #x14, #o24, #b10100)
效果很好?PS我正在使用SBCL。
如果这两个表达式相等,则CL-USER>(lambda(x)(+ x 10))#
CL-USER>#'(lambda(x)(+ x 10))#
(lambda (x) (+ x 10))
[LAMBDA
是扩展为(function (lambda ...))
的宏。
#'(lambda (x) (+ x 10))
[#'
是一个读取器宏,它在读取时扩展为(function ...)
。
a]
函数形式
,是列表的形式,并且具有第一个元素,该元素是要在参数上调用的函数的名称,这些参数是对函数形式的后续元素求值的结果。]]b)lambda形式