Почему интерпретатор Racket раньше писал списки с апострофом?

Почему вместо (1 2 3) написано '(1 2 3)?

> (list 1 2 3)
'(1 2 3)

1 ответ

Решение

Принтер Racket по умолчанию печатает значение в виде выражения, которое оценивается как эквивалентное значение (когда это возможно). Оно использует quote (сокращенно ') когда это возможно; если значение содержит нецензурную структуру данных, вместо этого оно использует функции конструктора. Например:

> (list 1 2 3)
'(1 2 3)
> (list 1 2 (set 3))   ;; sets are not quotable
(list 1 2 (set 3))

Большинство Lisps и Schemes печатают значения, используя write функция вместо Вы можете изменить принтер Racket на write режим с использованием print-as-expression параметр, как это:

> (print-as-expression #f)
> (list 1 2 3)
(1 2 3)

См. Документы на принтер Racket для получения дополнительной информации.

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