При написании функции в 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).