14. Методы обработки списков (лисп).
Списком в Лиспе называется упорядоченная последовательность S-выражений, заключенная в круглые скобки. Элементы списка отделяются друг от друга пробелами.
Одной из отличительных особенностей Лиспа является единая форма представления данных и программного кода (функций). Для обозначения списка, используемого как данные, и блокировки вычислений в Лиспе определена функция QUOTE (‘).
БАЗОВЫЕ ФУНКЦИИ ОБРАБОТКИ СПИСКОВ.
В Лиспе для построения, разбора и анализа списков существуют простые базовые функции:
1) Функции-селекторы CAR и CDR.
2) Функцию-конструктор CONS.
3) Предикаты ATOM, EQ, EQUAL.
СЕЛЕКТОРОМ называется функция, осуществляющая выборку элемента объекта данных.
Функция CAR возвращает голову списка, CDR - хвост списка. Функции CAR и CDR являются обратными для конструктора CONS.
Путем комбинации селекторов CAR и CDR можно выделять произвольный элемент списка.
КОНСТРУКТОРОМ называется функция, осуществляющая построение объекта данных. Функция CONS строит новый список из переданных ей в качестве аргументов выражения и списка. При этом первый аргумент включается в список-результат в качестве головы, второй – в качестве хвоста.
Функция LIST создает список из произвольных элементов. Вызов list эквивалентен суперпозиции вызовов CONS, причем вторым аргументом последнего вызова является nil, который служит основой для наращивания списка. (list ‘a ‘b ‘c) эквивалентно (cons ‘a (cons ‘b (cons ‘c nil))).
Для выборки элементов списков в Лиспе существуют функции выделения заданного элемента : FIRST, SECOND, THIRD, FOURTH, ... last и более общая функция NTH, выделяющая n-й элемент списка (nth n список).
ПРЕДИКАТАМИ в функциональном программировании называются функции, которые проверяют выполнение некоторого условия и возвращают логическое значение T или NIL.
ATOM, EQ и EQUAL являются базовыми предикатами Лиспа. С их помощью и используя другие базовые функции, можно задавать более сложные предикаты, которые будут проверять наличие более сложных свойств.
Предикат ATOM проверяет, является ли аргумент атомом.
Предикат EQ проверяет тождественность двух атомарных выражений.
Предикат EQUAL проверяет тождественность произвольных выражений.
.
.
- 2. Алгоритмы унификации
- 3. Структура пролог-программы
- Раздел описания доменов (типов).
- Раздел описания предикатов внутренней базы данных
- Раздел описания предикатов
- Раздел описания предложений
- Раздел описания внутренней цели
- 4. Организация повторов
- 8. Сортировка списков
- 9. Выборка элементов из списков
- 10. Слияние списков
- 11. Множества в прологе
- 12. Реализация деревьев в прологе
- 13. Функциональный подход программирования.
- 14. Методы обработки списков (лисп).
- 15. Определение универсальной функции.
- 16. Предикаты и истинность в лиспе.
- 17. Отображения и функционалы
- Отображения структур данных и функционалы
- 18. Имена, определения и контексты в лисп
- 19. Prog выражения и циклы в лисп Свойства атомов и категории функций
- Prog-выражения и циклы
- 20. Списки свойств атомов и структура списков
- Представление структуры списка
- 21. Числа и мультиоперации
- 22. Функционалы - общее понятие.
- 23. Безымянные функции
- 24. Экспертные системы. Реализация в пролог и лисп