Схема: имеют ли эти два списка идентичные представления памяти?

Я использую R5RS стандарт языка Scheme.

Пожалуйста, взгляните на эти два объекта:

  1. (1 (2 . 3))
  2. (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).

Другие вопросы по тегам