Кажется, что Common Lisp делает особый подход к (list 'quote 'x)
. Например, значение (list 'oddp '5)
равно '(oddp 5)
, а значение (list 'quote '5)
- ''5
. Другими словами, функция котировки, по-видимому, оценивается, хотя она должна быть в режиме данных из-за цитаты перед ней.Каково значение (list 'quote' 5) = '' 5, а не '(цитата 5) или' ('' 5)?
Сравните значение следующих выражений:
1. (list 'quote '5) = (list 'quote 5) = (quote '5) = ''5
2. (list '' '5) = '(''5)
3. (list ' 5) = (list 5) = '(5)
4. (list 'oddp '5) != (oddp 5)
Оценка представляется очень своеобразные. Но я считаю, что могу быть очень смущен.
Может кто-нибудь помочь мне лучше понять шаблон здесь?
Я немного смущен тем, что '' quote' и '(quote quote)' эквивалентны и оба оцениваются как 'quote'. Но когда используется как параметр функции 'list', тогда' (list 'quote' quote) 'оценивает' 'quote'. Кроме того, '(list 'x)' обычно оценивает '(x)', то есть '(cons' x())', а не просто 'x'. – anonemba
'' quote' is ** не ** эквивалентно 'quote'. Как сказал Райнер, ваши примеры очень неряшливы в оценке. – Marijn