Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Основные особенности ЯП LISP



К числу основных особенностей языка Лисп относится то, что программой является несколько определенных пользователем функций. С точки зрения синтаксиса лисп-функция, как и обрабатываемые ею данные, представляет собой так называемое S-выражение. В простейшем случае S-выражением является атом (идентификатор или число), в более сложном - список, т.е. последовательность элементов, разделенных обычно пробелом и заключенных в круглые скобки. Лисповские списки имеют рекурсивную структуру: элементом списка может быть произвольное S-выражение - как атом, так и список , например: (1() (a b (c)) class).

Некоторые S-выражения можно вычислять, получая в результате значения (тоже S-выражения); такие выражения называются формами. Формой может быть переменная, т.е. атом-идентификатор, которому было присвоено значение одной из лисповских функций (значением такой формы является текущее значение переменной). Формой является также список-обращение к функции вида (f a1 a2 ... an), где f – имя функции, а ai – её аргументы (n≥0). Программа на Лиспе представляет собой последовательность таких форм, и ее выполнение заключается в их вычислении.

В большинстве реализаций (версий) языка Лисп имеется много встроенных (стандартных) функций, на основе которых составляется программа. Ниже кратко описаны некоторые из них.

Символы и их значения

Для представления объектов окружающего мира мы используем их названия, то есть некоторые символы, ссылающиеся на реальные объекты. Значением символа можно назвать тот самый объект, который мы описываем символом. Очень важно заметить, что значением является именно объект, а не еще один символ для его описания.

Лисп оперирует символами (или именами переменных в привычном представлении, что не совсем верно), причем каждый из символов имеет значение. Таким образом, каждый из символов Лиспа – это отображение из пространства объектов в пространство имен, которым можно воспользоваться в обратную сторону, то есть «вычислить» символ.

Программирование на языке Лисп предполагает построение некоторой модели предметной области, сущностями которой оперирует программа. Но все же «изнутри» они представлены обычными структурами данных, поэтому мы можем говорить о структурах данных, представляемых символами.

Пусть помощью функции set символ а стал обозначать число 4. Если мы далее подадим на ввод Лиспа символ а, его значением в любом контексте будет 4.

Символ, значением которого является всегда он сам, называется атомом. Примерами атомов могут служить Т и NIL (логическая «истина» и логическая «ложь»), а также число 4 (как и любое другое число). Для того чтобы воспользоваться самим символом а (как реальным объектом), существует возможность блокирования вычисления символа с помощью функции quote.

 

Структуры данных

Основной и всегда используемой структурой данных Lisp является список. Список строится перечислением символов через пробел и заключением получившегося выражения в скобки, например, (А В С). Поскольку сам список, также является символом, то он может являться элементом других списков – (А (В С (D(Е F)))). В этом случае список должен представлять собой правильно построенное скобочное выражение, в котором каждой открывающей скобке соответствует закрывающая. Атомы и списки (то есть то, что раньше мы называли символами) называются еще и символьными выражениями, или s-выражениями (см. 2.2).

Внутреннее представление списка в Lisp классическое, то есть список состоит из набора связанных так называемых списочных ячеек – структуры из двух элементов значения и указателя на следующую ячейку. Последняя ячейка ссылается на пустой список (), то есть значением поля указателя является NIL. Следует отметить, что в Лиспе понятия пустого списка и булевского значения «ложь» совпадают, то есть () эквивалентно NIL.


Поделиться:



Последнее изменение этой страницы: 2019-06-20; Просмотров: 230; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.008 с.)
Главная | Случайная страница | Обратная связь