Цитата в схеме - PullRequest
       14

Цитата в схеме

2 голосов
/ 10 сентября 2009

Ниже приводится упражнение SICP. Я не мог понять это самостоятельно. Может кто-нибудь, почему поможет мне понять?

Введите следующий код в interpreator:

(car ''abracadabra)

И распечатайте «цитата». Почему?

Ответы [ 2 ]

6 голосов
/ 10 сентября 2009

Как сказал Гимпф, 'абракадабра = (цитата абракадабра). Вы можете убедиться в этом, набрав '' abracadabra в REPL, который напечатает (цитата abracadabra).

0 голосов
/ 09 августа 2010

Потому что абракадабра действительно есть (цитата (цитата абракадабра)). В Схеме правило таково: оценивать все части s-выражения и применять первую часть к остальным частям.

"автомобиль" и "цитата" являются символами ниже. #car и #quote - это функции, к которым они относятся.

Если вы берете

(car (quote (quote abracadabra)))

и оцените детали, вы получите

(#car (quote abracadabra))

Затем примените первую часть (автомобильную функцию) ко второй части (список из двух символов).

quote

И вы получите только символ «цитата».

Просто помните, чтобы выяснить, что происходит в Схеме, оценить части и применить первое к остальным. Если вы оцениваете цитату, вы получаете материал внутри. Единственная запутанная часть заключается в том, что некоторые примитивы (число и строки) оценивают сами себя.

...