Поведение вложенных кавычек в Scheme и Racket

При написании функции в Racket я случайно поставил две одинарные кавычки перед символом вместо одной. то есть я случайно написал '' a и обнаружил некоторое поведение вложенных кавычек, которое кажется странным. Я использую DrRacket и проверил это как с языком Racket, так и с языком R5RS.

(write (pair? (quote (quote a))))

печатает: #t.

(write (car (quote (quote a))))

печатает: quote

Но

(write (quote (quote a)))

и

(write '(quote a)))

Оба печатают: 'a

Может кто-нибудь сказать мне, почему в Scheme (и Racket) пара функций? интерпретирует (quote (quote a))) как пара из двух элементов quote и a, но функция write выводит 'a вместо (quote a).

6
задан Harry Spier 2 November 2011 в 16:55
поделиться