Схема: имеют ли эти два списка идентичные представления памяти?
Я использую R5RS стандарт языка Scheme.
Пожалуйста, взгляните на эти два объекта:
(1 (2 . 3))
(1 2 . 3)
Они имеют одинаковые представления памяти? Как это (A):
Или первый отличается? Как это (B):
Итак... Что правильно?
1 ответ
Решение
Они разные. Первый список составлен так, как показано на рисунке "B":
(cons 1
(cons (cons 2 3)
'()))
> '(1 (2 . 3))
Принимая во внимание, что вторая структура списка построена следующим образом, что соответствует фигуре "А":
(cons 1
(cons 2 3))
> '(1 2 . 3)
Также обратите внимание, что второй список не является правильным (имеется в виду: список, который заканчивается null
).