Составные данные и абстрактные типы данных

Важность возможности сочетания объектов

Абстракция данных - это мощная методология проектирования, общий метод отделения

Интерфейсом между двумя этими частями системы служит набор процедур, реализующих абстрактные данные в терминах конкретного представления. Наиболее значимые из них называются селекторами (в Коммон Лисп предпочитают англ. термин reader) и конструкторами.

Подобный подход "сокрытия реализации" порождает так называемые абстрактные типы данных и соответствует принципу инкапсуляции в объектно-ориентированном программировании.

Барьеры абстракции между частями и удобство их "возведения" обуславливают качество языка программирования, возможность справляться со сложностью.

Пример: рациональные числа
(numerator 3/4) ⇒ 3   ; селектор, или reader
(denominator 3/4) ⇒ 4 ; селектор
(/ 3 4) ⇒ 3/4         ; конструктор
(+ (/ 3 4) (/ 5 8)) ⇒ 11/8 ; операция над представлениями