"На Лиспе": `(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) только что выделен

Другие вопросы по тегам