Поиск…
Вступление
Создать пару
Пара может быть создана с помощью функции cons . Имя функции обозначает конструктор . В Scheme все в значительной степени основано на парах.
(cons a b)
Функция возвращает пару, содержащую элементы a и b . Первый параметр cons называется car (Content Address Register), а вторым аргументом является cdr (Content Decrement Register).
Доступ к автомобилю пары.
Доступ к данным в паре можно получить с помощью служебных функций. Чтобы получить доступ к car , мы должны использовать функцию car .
(car (cons a b))
> a
Также мы можем проверить следующее равенство:
(eq? a (car (cons a b)))
> #t
Доступ к cdr пары
Чтобы получить доступ к cdr, мы должны использовать функцию cdr.
(cdr (cons ab))
б
Также мы можем проверить следующее равенство:
(eq? b (cdr (cons ab)))
#t
Создайте список с парами
Список в схеме - это не что иное, как серия пар, вложенных друг в друга в cdr cons . И последним cdr соответствующего списка является пустой список '() .
Чтобы создать список (1 2 3 4) , у нас будет что-то вроде этого:
(cons 4 '())
> (4)
(cons 3 (cons 4 '()))
> (3 4)
(cons 2 (cons 3 (cons 4 '())))
> (2 3 4)
(cons 1 (cons 2 (cons 3 (cons 4 '()))))
> (1 2 3 4)
Как вы можете видеть, список в схеме - это связанный список, составленный из пар. По этой причине добавление объекта в начало списка занимает почти нет времени, но добавление элемента в конце списка заставляет интерпретатор ходить по всему списку.