На схеме минусы и многоточие

Данный

#;> (cons (cons 1 2) 3)
((1 . 2) . 3)

Когда мы пытаемся

#;> (cons 3 (cons 1 2))
(3 1 . 2)

Что определяет, где используется .? Каким будет представление памяти этих конструкций?


person James Raitsev    schedule 12.01.2013    source источник


Ответы (1)


Реализации схемы обычно печатают вещи, которые выглядят как списки в форме списка:

-> (cons 1 (cons 2 '()))
'(1 2)

В вашем примере (cons 3 (cons 1 2)) был бы списком, если бы не последний 2. Таким образом, ваша реализация делает все возможное, чтобы напечатать его в виде списка до тех пор, пока 2. Другой пример не содержит части, похожей на список, поэтому он просто печатается как вложенные пары.

person Asumu Takikawa    schedule 12.01.2013