Почему у Схемы есть список и цитата?
Так как (список 1 2 3) дает (1 2 3) и (цитата (1 2 3)) дает (1 2 3), что является обоснованием наличия обоих?
Так как схема в противном случае настолько свободна, они должны иметь некоторую значимую разницу. Что это?
Ответы
Ответ 1
В приведенном примере quote
и list
имеют тот же результат, потому что числовые константы оценивают сами. Если вы используете выражения, которые не являются самооценками в списке (например, переменные или вызовы функций), вы увидите разницу:
(quote (a b c))
предоставит вам список, содержащий символы a
, b
и c
, а (list a b c)
предоставит вам список, содержащий значения переменных a
, b
и c
(или ошибка, если переменные не существуют).
Ответ 2
Список создает список, поэтому (список 1 2 3) создает список из трех элементов.
Цитата предотвращает оценку. Без цитаты выражение (1 2 3) будет оцениваться как функция 1, называемая аргументами 2 и 3, что, очевидно, не имеет смысла. Цитата предотвращает оценку и просто возвращает список, который буквально указывается в его внешней печатной форме как (1 2 3).