Что такое «(апостроф) в ракетке?
Я немного запутался в значении'
Войдите в ракетку. Мне кажется, что один и тот же знак имеет разные значения. Посмотрите на 2 простых примера ниже:
Возвращает вновь выделенный список, содержащий vs в качестве своих элементов.
> (list 1 2 3 4)
'(1 2 3 4)
Создает постоянное значение, соответствующееданная величина (то есть представление фрагмента программы) без его лексической информации, местоположения источника и т. д. Кавычки, векторы и блоки являются неизменяемыми.
> '(1 2 3 4)
'(1 2 3 4)
Итак, мой вопрос:'
знак имеет 2 значения (условное обозначение исписок) или это один и тот же тип данных иlist
на самом деле возвращаетприведенное постоянное значение? Если второй случай, почему это работает:
> '(+ (- 2 13) 11)
'(+ (- 2 13) 11)
> (eval (list + (- 2 13) 11))
0
(также(eval '(+ (- 2 13) 11))
работает и правильно оценивает0
)
Но это не так:
> (list + (- 2 13) 11)
'(#<procedure:+> -11 11)
> (eval '(#<procedure:+> -11 11))
. read: bad syntax `#<'
Связано может быть:Что такое «(апостроф) в Лиспе / Схеме?