我知道你可以使用'
(aka quote
)创建一个列表,我一直都在使用它,如下所示:
> (car '(1 2 3))
1
Run Code Online (Sandbox Code Playgroud)
但它并不总是像我期望的那样工作.例如,我试图创建一个函数列表,像这样,但它不起作用:
> (define math-fns '(+ - * /))
> (map (lambda (fn) (fn 1)) math-fns)
application: not a procedure;
expected a procedure that can be applied to arguments
given: '+
Run Code Online (Sandbox Code Playgroud)
当我使用时list
,它的工作原理:
> (define math-fns (list + - * /))
> (map (lambda (fn) (fn 1)) math-fns)
'(1 -1 1 1)
Run Code Online (Sandbox Code Playgroud)
为什么?我认为'
这只是一个方便的速记,为什么行为不同?