Я знаю, что вы можете использовать '
(aka quote
) для создания списка, и я использую его все время, например:
> (car '(1 2 3))
1
Но он не всегда работает, как ожидал Id. Например, я попытался создать список функций, вроде этого, но он не работал:
> (define math-fns '(+ - * /))
> (map (lambda (fn) (fn 1)) math-fns)
application: not a procedure;
expected a procedure that can be applied to arguments
given: '+
Когда я использую list
, он работает:
> (define math-fns (list + - * /))
> (map (lambda (fn) (fn 1)) math-fns)
'(1 -1 1 1)
Почему? Я думал, что '
является просто удобной стенографией, так почему же поведение отличается?