Почему интерпретатор 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 для получения дополнительной информации.