Функции
<<  Периодические функции Функция у=кх  >>
Определение функций
Определение функций
Лямбда-выражение изображает параметризованные вычисления Лямбда-вызов
Лямбда-выражение изображает параметризованные вычисления Лямбда-вызов
Определение функций и их вычисление в Лиспе основано на
Определение функций и их вычисление в Лиспе основано на
Символы xi являются формальными параметрами определения, которые
Символы xi являются формальными параметрами определения, которые
Лямбда-вызов соответствует вызову функции
Лямбда-вызов соответствует вызову функции
Вычисление лямбда-вызова, или лямбда-преобразозание
Вычисление лямбда-вызова, или лямбда-преобразозание
Объединение лямбда-вызовов
Объединение лямбда-вызовов
лямбда-выражение без аргументов (фактических параметров) представляет
лямбда-выражение без аргументов (фактических параметров) представляет
DEFUN дает имя описанию функции
DEFUN дает имя описанию функции
Значением этой формы является имя новой функции: _(defun list1 (x y)
Значением этой формы является имя новой функции: _(defun list1 (x y)
SYMBOL-FUNCTION выдает определение функции
SYMBOL-FUNCTION выдает определение функции
Символ может одновременно именовать некоторое значение и функцию, и
Символ может одновременно именовать некоторое значение и функцию, и
Упражнения 1. Определите с помощью лямбда-выражения функцию,
Упражнения 1. Определите с помощью лямбда-выражения функцию,
3. Определите функции (CADDR х) и (LIST xl х2 хЗ) с помощью базовых
3. Определите функции (CADDR х) и (LIST xl х2 хЗ) с помощью базовых

Презентация: «Определение функций». Автор: Irene V. Grigorieva. Файл: «Определение функций.ppt». Размер zip-архива: 91 КБ.

Определение функций

содержание презентации «Определение функций.ppt»
СлайдТекст
1 Определение функций

Определение функций

Функциональное программирование Григорьева И.В.

2 Лямбда-выражение изображает параметризованные вычисления Лямбда-вызов

Лямбда-выражение изображает параметризованные вычисления Лямбда-вызов

соответствует вызову функции Вычисление лямбда-вызова или лямбда- преобразование Объединение лямбда-вызовов Лямбда-выражение - функция без имени DEFUN дает имя описанию функции - SYMBOL-FUNCTION выдает определение функции Задание параметров в лямбда-списке Изображение функций в справочных руководствах Функции вычисляют все аргументы Многозначные функции ? Определение функции в различных диалектах Лиспа - При вычислении NLAMBDA аргументы не вычисляются

3 Определение функций и их вычисление в Лиспе основано на

Определение функций и их вычисление в Лиспе основано на

лямбда-исчислении Черча, предлагающем для этого точный и простой формализм. В лямбда-исчислении Черча функция записывается в следующем виде: lambda(xl,x2... .,xn).fn В Лиспе лямбда-выражение имеет вид (LAMBDA (xl х2 ... хn) fn) LAMBDA означает, что мы имеем дело с определением функции.

4 Символы xi являются формальными параметрами определения, которые

Символы xi являются формальными параметрами определения, которые

именуют аргументы в описывающем вычисления теле функции fn. Входящий в состав формы список, образованный из параметров, называют лямбда-списком. Пример: (lambda (х у) (+ (* х х) (* у у))) Формальность параметров означает, что их можно заменить на любые другие символы, и это не отразится на вычислениях, определяемых функцией.

5 Лямбда-вызов соответствует вызову функции

Лямбда-вызов соответствует вызову функции

Лямбда-выражение - это определение вычислений и параметров функции в чистом виде без фактических параметров, или аргументов. Для того, чтобы применить такую функцию к некоторым аргументам, нужно в вызове функции поставить лямбда-определение на место имени функции: (лямбда-выражение а1 а2 ... an) Здесь ai - формы, задающие фактические параметры, которые вычисляются как обычно. _((lambda (x у) (cons x (cons у nil))) 'а 'Ь) (А В)

6 Вычисление лямбда-вызова, или лямбда-преобразозание

Вычисление лямбда-вызова, или лямбда-преобразозание

Вычисление лямбда-вызова, или применение лямбда-выражения к фактическим параметрам, производится в два этапа. Сначала вычисляются значения фактических параметров и соответствующие формальные параметры связываются с полученными значениями. Этот этап называется связыванием параметров. На следующем этапе с учетом новых связей вычисляется форма, являющаяся телом лямбда-выражения, и полученное значение возвращается в качестве значения лямбда-вызова. Формальным параметрам после окончания вычисления возвращаются те связи, которые у них, возможно, были перед вычислением лямбда-вызова. Весь этот процесс называют лямбда-преобразованием .

7 Объединение лямбда-вызовов

Объединение лямбда-вызовов

Лямбда-вызовы можно свободно объединять между собой и другими формами. Вложен­ные лямбда-вызовы можно ставить как на место тела лямбда-выражения, так и на место фактических параметров. ((lambda (y) ((lambda (x) (list (y x)) ‘ВНУТРЕННИЙ)) ‘ВНЕШНИЙ) (ВНЕШНИЙ ВНУТРЕННИЙ)

8 лямбда-выражение без аргументов (фактических параметров) представляет

лямбда-выражение без аргументов (фактических параметров) представляет

собой лишь определение, но не форму, которую можно вычислить. Само по себе оно интерпретатором не воспринимается: _(lambda (x у) (cons x (cons у nil))) Error: Undefined function LAMBDA Лямбда-выражение - это безымянная функция, которая пропадает тотчас после вычисления значения формы.

9 DEFUN дает имя описанию функции

DEFUN дает имя описанию функции

Дать имя и определить новую функцию можно с помощью функции DEFUN. (DEFUN имя лямбда-список тело) Что можно представить себе как сокращение записи (DEFUN имя лямбда-выражение), из которой для удобства исключены внешние скобки лямбда-выражения и сам атом LAMBDA. Например: (defun list1 (lambda (х у) (cons x (cons у nil)))) (defun list1 (x у) (cons x (cons у nil)))

10 Значением этой формы является имя новой функции: _(defun list1 (x y)

Значением этой формы является имя новой функции: _(defun list1 (x y)

(cons x (cons y nil))) LIST1 (list1 ‘a ‘b) (A B)

11 SYMBOL-FUNCTION выдает определение функции

SYMBOL-FUNCTION выдает определение функции

Предикат BOUNDP проверяет наличие у символа значения. Соответственно предикат FBOUNDP проверяет, связано ли с символом определение функции: -(boundp 'list1) Т Значение символа можно было получить при помощи функции SYMBOL-VALUE. Аналогично функция SYMBOL-FUNCTION дает определение функции, связанное с символом: _(symbol-function 'list1) (LAMBDA (X Y) (CONS X (CONS Y NIL)))

12 Символ может одновременно именовать некоторое значение и функцию, и

Символ может одновременно именовать некоторое значение и функцию, и

эти возможности не мешают друг другу. Позиция символа в выражении определяет его интерпретацию: (setq list1 'a) А (list1 list1 'b) (А В)

13 Упражнения 1. Определите с помощью лямбда-выражения функцию,

Упражнения 1. Определите с помощью лямбда-выражения функцию,

вычисляющую х+у-х*у. 2. Вычислите значения следующих лямбда-вызовов: a) ((lambda (x) (cons x NIL)) 'у) b) ((lambda (x у) (list у х)) 'х у) c) ((lambda (x) (list x)) (list NIL)) d) ((lambda (x) (list x)) e) ((lambda (x) (list x)) (list NIL)))

14 3. Определите функции (CADDR х) и (LIST xl х2 хЗ) с помощью базовых

3. Определите функции (CADDR х) и (LIST xl х2 хЗ) с помощью базовых

функций. (Используйте имена CADDR1 и LIST1, чтобы не переопределять одноименные встроенные функции системы Коммон Лисп.) 4. Определите функцию (НАЗОВИ х у), которая определяет функцию с именем, заданным аргументом х, и лямбда-выражением у. Определите с помощью этой функции функцию, вычисляющую сумму квадратов двух чисел, и саму функцию НАЗОВИ.

«Определение функций»
http://900igr.net/prezentacija/algebra/opredelenie-funktsij-216859.html
cсылка на страницу

Функции

16 презентаций о функциях
Урок

Алгебра

35 тем
Слайды
900igr.net > Презентации по алгебре > Функции > Определение функций