Следовательно, списками можно построить любой классический ориентированный граф
вида G(V,S), где V – множество вершин графа; S – множество дуг графа. Дополнительно к
этому за каждой вершиной закреплено некоторое значение. При этом связи и значения
вершин могут динамически изменяться в процессе выполнения программы. Поскольку и
данные и действия программы представлены списками с изменяемыми значениями и
структурой, то программа меняет как свои данные, так и себя. В этом состоит
уникальность ЛИСПа.
ЛИСП-программа может иметь динамическую (формат файла .lsp) или фиксированную
(формат файла .exe) структуры. В первом случае она обрабатывается интерпретатором, во
втором случае компилятором. Интерпретатор работает медленнее, но позволяет менять
программу, а компилятор много быстрее, но фиксирует ее. За все надо платить.
Переменные программы есть динамические:
1. атомы - скалярные переменные поля CAR списочных элементов;
2. списки элементов, из которых строится любые графовые структуры.
Действия также описываются списочными структурами и выполняются слева направо в
тексте программы, которая естественно имеет последовательную структуру предложений.
Но предложения могут включать ссылки на любое другое предложение, в том числе на
самих себя, что называется рекурсией. Рекурсия часто используется в ЛИСП-программах
в различных видах.
Все имена в ЛИСП-программе не типизированы. Это означает, что формат представления
данных также расфиксирован и может меняться в процессе выполнения программы, если
не запрещено специально. Интерпретатор или преобразует форматы автоматически в
совместимый вид или выдает ошибку о несовместимости форматов. Имена в ЛИСП-
программе называются символами.
Целью дисциплины есть изучение языка программирования ЛИСП и стиля
программирования на нем.
Задачами дисциплины есть:
1. Изучение теории ЛИСП и СП ЛИСП.
2. Получение навыков программирования элементарных задач на ЛИСП.
3. Приложение ЛИСП для создания простейших ЭС или других интеллектуальных
приложений.
1. Синтаксис
Синтаксис Лиспа очень простой. Программа на Лиспе состоит из S-выражений (от
Symbolic - символьный), которые для краткости далее мы будем называть просто
выражениями. Каждое выражение представляет собой либо атом, либо список. Атом
представляется каким-либо значением данного определенного типа, исключая списки.
Разрешенные типы данных различны в разных диалектах Лиспа. Список является
последовательностью (возможно пустой) элементов списка, заключенной в скобки.
В форме Бэкуса-Наура синтаксис Лиспа определяется следующим образом:
<Лисп-программа> ::= <S-выражение>...
<S-выражение> ::= <атом>|<список>