Реферат: ЛИСП

9 Особенности свойств символов?


Лабораторная работа №2.

Тема: Определение функций. Функции ввода-вывода. Вычисления, изменяющие структуру.

Цель: Получить навыки в написании функций. Изучить функции ввода-вывода.


  1. Функции, определяемые пользователем.

  2. Функция ввода.

  3. Функции вывода.

  4. Вычисления, изменяющие структуру.

  5. Задание к лабораторной работе.

  6. Вопросы.

1. Функции, определяемые пользователем.

Определение функций и их вычисление в Лиспе основано на лямбда-исчислении Черча.

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

(LAMBDA (x1 x2 ... xn) fn)


Символ LAMBDA означает, что мы имеем дело с определением функции. Символы xi являются формальными параметрами определения, которые имеют аргументы в описывающем вычисления теле функции fn. Входящий в состав формы список, образованный из параметров, называют лямбда-списком.

Телом функции является произвольная форма, значение которой может вычислить интерпретатор Лиспа.


_(lambda (x y) (+ x y))


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

Лямбда-выражение - это определение вычислений и параметров функции в чистом виде без фактических параметров, или аргументов. Для того, чтобы применить такую функцию к некоторым аргументам, нужно в вызове функции поставить лямбда-определение на место имени функции:

(лямбда-выражение а1 а2 ... аn)


Здесь ai - формы, задающие фактические параметры, которые вычисляются как обычно.


_((lambda (x y) (+ x y)) 1 2) р 3


Лямбда-вызовы можно свободно объединять между собой и другими формами. Вложенные лямбда-вызовы можно ставить как на место тела лямбда-выражения, так и на место фактических параметров.


_((lambda (x) ;Тело лямбда-вызова -

((lambda (y) (list x y)) ‘b)) ‘a) р (a b) лямбда-вызов.


Записывать вызовы функций полностью с помощью лямбда-вызовов не разумно, поскольку очень скоро выражения в вызове пришлось бы повторять, хотя разные вызовы одной функции отличаются лишь в части фактических параметров. Проблема разрешима путем именования лямбда-выражений и использования в вызове лишь имени.

Дать имя и определить новую функцию можно с помощью функции DEFUN:

(DEFUN имя лямбда-список тело)


DEFUN соединяет символ с лямбда-выражением, и символ начинает представлять определенные этим лямбда-выражением вычисления. Значением этой формы является имя новой функции.

После именования функции ее вызов осуществляется по имени и параметрам.


К-во Просмотров: 684
Бесплатно скачать Реферат: ЛИСП