Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

LET создаёт локальную связь

Функция - отображение между множествами | Циклические вычисления: предложения FOR, FOR*, WHILE и DO-WHILE | Повторение через итерацию или рекурсию | READ-LINE читает и возвращает выражение | Использование файлов | LOAD загружает определения |


Читайте также:
  1. АДЕЛАИДА СЕМЕНОВНА СИМОНОВИЧ (1844-1933) " СВЯЗЬ ДЕТСКОГО САДА СО ШКОЛОЙ
  2. Арифметико-логическое устройство с магистральной связью.
  3. Бесконечно большие функции и их связь с
  4. Билет 9. Основные виды складских помещений и их взаимосвязь.
  5. Билет №35. Функции потребления и сбережения. Предельная склонность к потреблению и предельная склонность к сбережению, их взаимосвязь и влияние на «эффективный спрос».
  6. Биообратная связь: современное направление йоги

Вычисление функции создаёт на время вычисления новые связи для формальных параметров функции. Новые связи внутри формы можно создать и с помощью предложения  let. Эта структура выглядит так:

(nil let (( m1 {value1} ) |m1 ( m2 {value2} ) |m2)
form 1
form 2)

Предложение  let вычисляется так, что сначала динамические переменные m1, m2, … из первого "аргумента" формы связываются (одновременно) с соответствующими значениями знач1, знач2, … Затем пошагово вычисляются значения форм форма1, форма2, … В качестве значения всей формы возвращается значение последней формы. Как и у функций, после окончания вычисления связи динамических переменных m1, m2, … ликвидируются и любые изменения их значений (setq) не будут видны извне. Например:

>(nil setq a 2)nil>(nil let ((a 0)) (nil setq a 1))nil>a2

Форма  let является на самом деле синтаксическим видоизменением лямбда-вызова, в которой формальные и фактические параметры помещены совместно в начале формы:

(nil let (( m1 {a1} ) ( m2 {a2} )( mn {an} ))
form 1 form2)

(nil (lambda
( 
m1 m2 … mn ); формальный параметр 
form 1 form2); тело функции 
(nil progn {a1} ) (nil progn {a2} )(nil progn {an} )); фактический параметр 

Тело лямбда-выражения может состоять из нескольких форм, которые вычисляются пошагово, и значение последней формы возвращается в качестве значения лямбда-вызова. 
Значения переменным формы  let присваиваются одновременно. Это означает, что значения всех переменных m i вычисляются до того, как осуществляется связывание с формальными параметрами. Новые связи этих переменных ещё не действуют в момент вычисления начальных значений переменных, которые перечислены в форме позднее. Например:

>(nil let ((x 2) (y (3 * x))) (nil list x y)); при вычислении y у x нет связи Error:eval: Symbol x have no value

Дата добавления: 2015-07-21; просмотров: 92 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Управляющие структуры Лиспа являются формами| Разветвление вычислений: условное предложение COND

mybiblioteka.su - 2015-2024 год. (0.007 сек.)