Инструменты пользователя

Инструменты сайта


examination:flp:question10

10. Связь между функциями CAR, CDR и CONS.

Понятно, что поскольку списки являются основной «составной» структурой данных, то большая часть функций Лиспа работает именно со списками. Но как ни удивительно, все многообразие функций языка основано на трех китах - трех основных функциях с помощью которых можно реализовать все остальные. Вот эти киты - CAR, CDR и CONS.

CAR

Функция CAR предназначена для извлечения первого элемента списка, который возвращается в качестве ее результата. Например,

(car '(1 2 3 4 5))

вернет 1, а

(car '(1 2 3) (4 5) 6)

вернет список - (1 2 3).

CDR

CDR выполняет «оставшуюся» часть работы - эта функция возвращает список , содержащий все элементы кроме первого. Поэтому, применительно к приведенным выше примерам, вы получите:

(cdr '(1 2 3 4 5))

(2 3 4 5)

(cdr '(1 2 3) (4 5) 6)

((4 5) 6)

Как вы увидите ниже, из этих строительных кирпичиков можно построить действительно интересные конструкции!

CONS

Приведенные выше функции используются для разбиения списка на отдельные фрагменты. А функция CONS, наоборот, производит слияние двух аргументов, формируя из них список, который возвращается в качестве результата. Функция принимает ровно 2 (!) аргумента, первый из которых используется в качестве CAR-части списка, а второй - в качестве его CDR-части. Это очень важно - первый аргумент рассматривается функцией cons именно как элемент вновь формируемого списка

examination/flp/question10.txt · Последние изменения: 2014/01/15 08:17 (внешнее изменение)