Странный сценарий цитирования Лиспа - Грэхэм о Лиспе, стр. 37

Я прорабатываю книгу Грэма «О Лиспе») и не могу понять следующий пример на странице 37:

If we define exclaim so that its return value
incorporates a quoted list,

(defun exclaim (expression)
  (append expression ’(oh my)))

>  (exclaim ’(lions and tigers and bears))
(LIONS AND TIGERS AND BEARS OH MY)
> (nconc * ’(goodness))
(LIONS AND TIGERS AND BEARS OH MY GOODNESS)

could alter the list within the function:

> (exclaim ’(fixnums and bignums and floats))
(FIXNUMS AND BIGNUMS AND FLOATS OH MY GOODNESS)

To make exclaim proof against such problems, it should be written:
(defun exclaim (expression)
  (append expression (list ’oh ’my)))

Кто-нибудь понимает, что здесь происходит ? Это серьезно портит мою ментальную модель того, что делает цитирование.

13
задан Rainer Joswig 21 May 2018 в 20:25
поделиться