Вызов функции | MetodPro.ru

Реклама на сайте

Вызов функции


(e e1…ek). Предварительно вычисляются фактические параметры e1…ek в окружении n,v. Для этого ввыдится вспомогательная функция evalList(e,n,v), где e = (e1…ek). Функция evallist вычисляет каждый аргумент списка e по одному в текущем окружении и формирует список вычисленных аргументов.

evalList(e,n,v) = if l=nil then nil else cons(eval(car(e), n, v), evallist(cdr(e),n,v))

Поскольку значением функции e является замыкание ((y’ e’) (n’ v’)), то правило для вычисления вызова функции можно записать следующим образом: eval [(e e1…ek),n,v] = eval [e’, (y’.n’), (z.v’)], где z = evallist[(e1…ek),n,v]

Список z должен быть равносоставленным по отношению к списку формальных параметров y’.

Вычисление блока let очень похоже на вызов функций и правило можно описать следующим образом:

 eval [(let e (x1e1)…(xk ek),n,v] = eval [e ((x1…xk).n), (z.v’)], где z = evallist[(e1…ek),n,v]

Для удобства формальные параметры x1…xk и фактические параметры e1…ek группируются. Список формальных параметров расширяет текущий список имен n, а вычисленный список параметров e1…ek расширяет текущий список значение v. В полученном расширенном окружении вычисляется выражение e.



Методические пособия

  • Системы автоматизированного проектирования
  • Социология молодёжи
  • Общая социология
  • Криптография
  • Проектирование трансляторов
  • Компьютерная графика
  • Моделирование систем
  • Информационная безопасность
  • Теория вычислительных процессов
  • Логические основы искусственного интелекта
  • Проектирование распределённых информационных систем