"На Лиспе": `(a b c) vs '(a b c) vs (список'a 'b 'c)
В " На Лиспе" (стр. 84) Грэм говорит
‘(a b c)
(без запятой) равно’(a b c)
а потом говорит
Список с кавычками эквивалентен обращению к списку с цитируемыми элементами.
То есть,‘(a b c)
(без запятой) равно(list ’a ’b ’c)
,
Одно утверждение должно быть ложным, так как '(a b c)
а также (list 'a 'b 'c)
не кажется равным. Последний является новым списком (безопасным для изменения), в то время как первый является константой - или, по крайней мере, спецификация позволяет компилятору обрабатывать его как таковой.
Так что, возможно, это очень придирчивый вопрос, но это список в кавычках (без запятой) вроде ‘(a b c)
равно '(a b c)
или равно (list 'a 'b 'c)
?
1 ответ
Равный и Эквивалент не одно и то же.
Конечно (equal '(a b c) (list 'a 'b 'c))
возвращается t
, но, как вы правильно заметили, '(a b c)
является константой в кавычках (list 'a 'b 'c)
только что выделен