Библиотека knigago >> Компьютеры: Языки и системы программирования >> Lisp, Scheme >> Очень краткое введение в язык Лисп


Евгений Мариинский, автор мемуаров "Я дрался на "Аэрокобре"", предлагает захватывающий и проницательный взгляд на воздушные бои Второй мировой войны изнутри кабины истребителя. Как пилот прославленного авиационного полка, Мариинский описывает свой путь в небе от первых учебных полетов до напряженных боевых миссий. В книге читатель погружается в адреналин и ужас воздушного боя. Мариинский мастерски передает напряженность и опасность каждого вылета, делясь своими мыслями и...

СЛУЧАЙНАЯ КНИГА

Нити амбиций. Лорен Коулмен
- Нити амбиций

Жанр: Научная Фантастика

Серия: BattleTech/Боевые роботы (Армада-пресс, Дрофа)

Б. Л. Файфель - Очень краткое введение в язык Лисп

Очень краткое введение в язык Лисп
Книга - Очень краткое введение в язык Лисп.  Б. Л. Файфель  - прочитать полностью в библиотеке КнигаГо
Название:
Очень краткое введение в язык Лисп
Б. Л. Файфель

Жанр:

Самиздат, сетевая литература, Литература ХXI века (эпоха Глобализации экономики), Lisp, Scheme

Изадано в серии:

неизвестно

Издательство:

неизвестно

Год издания:

-

ISBN:

неизвестно

Отзывы:

Комментировать

Рейтинг:

Поделись книгой с друзьями!

Помощь сайту: донат на оплату сервера

Краткое содержание книги "Очень краткое введение в язык Лисп"

Аннотация к этой книге отсутствует.

Читаем онлайн "Очень краткое введение в язык Лисп". [Страница - 27]

второго
параметра значение второго параметра замещает список свойств атома, заданного
первым параметром. При этом стандартные флаги не создаются и не замещаются. Вот
примеры вызова функции SPROPL:

(spropl 'a1 '(q w e r t y))
==> (q w e r T y)
(proplist 'a1)
==> (q w e r T y)
(spropl 2 '(a b c))
==> (a b c)
(proplist 2)

==> (FIXED a b c)
(+ 2 2)
==> 4

В первом примере у атома a1 устанавливается список свойств (q w e r t y). Последующий
вызов функции PROPLIST показывает, что список успешно установлен. В следующем
примере делается попытка установить список свойств у атома 2. И попытка оказывается
успешной: последующий вызов PROPLIST показывает, что у атома 2 список свойств
изменился. Стандартный флаг FIXED при этом никуда не делся, - как было отмечено
выше, стандартные флаги неуничтожимы. Пусть читатель приведет еще какой-нибудь
язык программирования, в котором у двойки могут быть еще какие-либо свойства!
(Разве что Forth. Может быть, и до него доберемся...) Кстати, наличие списка свойств
нисколько не мешает арифметике - последний пример это подтверждает: 2 + 2 попрежнему 4.
Список свойств атома может иметь сколь угодно сложную структуру, однако обычно он
является одноуровневым списком.
В принципе двух описанных функций (PROPLIST и SPROPL) достаточно для любых
манипуляций со списками свойств. При необходимости другие функции можно
реализовать на Лиспе (см. PUTFLAG, PUTPROP, FLAG, FLAGP).

Важное замечание
Совершенно естественным применением списков свойств могло бы быть моделирование
математических объектов (рациональные числа, векторы, матрицы и т.д.). К сожалению,
использование списков свойств здесь не так удобно, как может показаться на первый
взгляд. Проблема состоит в том, что каждый атом в Лиспе уникален, соответственно
уникален и список его свойств. А вот значения атома зависят от контекста
вычислений. Если некий атом используется как локальная переменная, то его значение
при выходе из PROG-конструкции восстановится. Но если внутри PROG-конструкции у
этого атома модифицировался список свойств, то этот список свойств не
изменитсяпри выходе из PROG. Подобная ситуация совершенно недопустима, поэтому в
главе, посвященной приемам программирования на Лиспе, признаки создаваемых
объектов (массивов, рациональных чисел и т.д.) хранятся в общем списке с данными,
составляющими сущность моделируемого объекта.

--">

Оставить комментарий:


Ваш e-mail является приватным и не будет опубликован в комментарии.