
- •Декларативные и императивные языки.
- •Стандартизация языков программирования
- •Типы данных
- •Структуры данных
- •Парадигма программирования
- •Способы реализации языков
- •Языки функционального программирования
- •Создание универсального функционального языка.
- •3. Символьная обработка и искусственный интеллект.
- •4. Применение искусственного интеллекта.
- •5. Основы языка лисп (6 – 15 вопросы)
- •6. Символы и списки
- •7. Понятие функции
- •8. Базовые функции Лиспа.
- •9. Имя и значение символа Лиспа.
- •10. Определение функций Лиспа.
- •11. Передача параметров в область их действия Лиспа.
- •11. Вычисления в Лиспе.
- •13 . Внутреннее представление списков в Лиспе
- •14. Свойства символа Лиспа.
- •15. Ввод и вывод в Лиспе.
- •16.Основы рекурсии.
- •17.Простая рекурсия.
- •18.Другие виды рекурсии.
- •19.Функции более высокого порядка.
- •20.Применяющие функционалы.
- •21.Отображающие функционалы.
- •22.Замыкания.
- •23.Абстрактный подход в Лиспе.
- •24.Макросы.
- •25.Понятия. Числа. Символы. Списки. Строки. Последовательности. Массивы. Структуры.
- •26.Развитие языка лисп и лисп-системы. История лисПа. Лисп-системы. Лисп-машины.
5. Основы языка лисп (6 – 15 вопросы)
6. Символы и списки
Символы используются для представления других объектов
Используются символы и построенные из них символьные структуры. В Лиспе понятие символа используется в более узком и точном смысле: под ним подразумевается запись или обозначение. В Лиспе символы обозначают числа, другие символы или более сложные структуры, программы (функции) и другие лисповские объекты.
Примеры символов:
X
Символ
defun
STeP-1984
Символы в языке Коммон Лисп
Символы языка Коммон Лисп могут состоять из букв, цифр и некоторых других знаков */@$%"&_\<>
Прописные и строчные буквы отождествляются и представляются прописными буквами.
В состав символов можно включать пробелы и другие зарезервированные специальные знаки. Для этого либо символ с двух сторон ограничивается вертикальной чертой (|, bar), либо перед каждым таким специальным знаком, входящим в символ, ставится обратная косая черта (\, backslash).
Числа являются константами
Числа все же не являются символами, так как число не может представлять иные лис-
повские объекты, кроме самого себя, или своего числового значения. Как и в других языках программирования, в Лиспе для различных целей используется много различных типов чисел. Примеры чисел:
746 ; целое число
-3.14 ; десятичное число
3.055Е8 ; число, представленное мантиссой и порядком
Числа отличаются от символов способом записи.
Логические значения Т и NIL
Символы Т и NIL имеют в Лиспе специальное назначение: Т. обозначает логическое значение истина (true), а NIL - логическое значение ложь (false). Их нельзя использовать в качестве имен других лисповских объектов.
Числа и логические значения Т и NIL являются константами, остальные символы - переменными, которые используются для обозначения других лисповских объектов.
Кроме этого, система Коммон Лисп содержит глобальные специальные переменные , имеющие изменяемые встроенные значения. В языке Лисп предусмотрена специальная директива (DEFCONSTANT), используемая для превращения любого символа в константу.
Атомы - символы и числа представляют собой те простейшие объекты Лиспа, из которых строятся остальные структуры.
Построение списков из атомов и подсписков
Атомы и списки - это основные типы данных. Список - упорядоченная последовательность, элементами которой являются атомы либо списки. Списки заключаются в круглые скобки, элементы списка разделяются пробелами. Например, следующий список состоит из трех символов и одного подсписка, который в свою очередь состоит из двух атомов:
(а b (с d) е)
Список, в котором нет ни одного элемента, называется пустым списком и обозначается "()" или символом NIL. NIL может быть, например, элементом других списков:
NIL ; то же, что и ()
(NIL) ; список, состоящий из атома NIL
(()) ; то же, что и (NIL)
((())) ; то же, что и ((NIL))
(NIL ()) ; список из двух пустых списков
Атомы и списки называются символьными выражениями или s-выражениями.
Списки можно использовать для представления всевозможных знаний.
(герой-56
(имя Zippy)
(кличка Pinhead)
(язык английский)
(приметы
(голова грушевидная)
(волосы редкие))
(встречается Лисп-машины и комиксы))
Запись в виде списка гибка, свободна по форме и одновременно достаточно точна и понятна. При вводе выражений в Лисп-систему пустые строки, пробелы и расположение текста игнорируются.
Различная интерпретация списков:
(+ 2 3) можно интерпретировать в зависимости от окружения и использования либо как действие, дающее в результате число 5, либо как список, состоящий из трех элементов. Способ интерпретации определяется положением выражения и алгоритмом функционирования Лисп-системы.