ВУЗ:
Составители:
Рубрика:
Первым языком функционального программирования был язык LISP и многие базовые
понятия этого языка стали классикой функционального программирования.
Базовые функции функционального программирования:
car(x) - дает первый элемент списка х ;
cdr(х) - хвост списка ( список без первого элемента) ;
cons(x,y) - добавляет элемент х к списку у;
append(x,y) - добавляет список y к списку x ;
Примеры.
Пусть x = (1, 2, 3) y = (4, 5)
car(x) = (1);
cdr(х) = (2, 3);
cons(x,y) = ((1, 2, 3), 4, 5);
append(x,y) = (1, 2, 3, 4, 5).
Синтаксис LISP достаточно архаичный, поэтому воспользуемся способом записи
функциональных программ с помощью специальной нотации, ставшей популярной с легкой
руки Хендерсона.
Примеры.
Функция дл вычисления длины списка
дл(х) if(x) = nil then 0 else дл(cdr(x)) + 1
Вычислим функцию для конкретного списка.
дл(A, B, C) = дл(B, C) + 1
дл(B, C) = дл(C) + 1
дл(C) = дл(nil) + 1
дл (nil) = 0
"Пройдя" в обратном направлении можно получить числовое значение.
Обращение списка обр, то есть список A, B, C обратится в список C, B, A
обр(x, y) if x = nil then y else обр(cdr(x), cons(car(x), y))
Вычислим функцию для конкретного списка
обр(A, B, C, nil) = обр((B, C), (A))
обр((B, C), (A)) = обр((C), (B, A))
обр((C), (B, A)) = обр((nil), C, B, A)
Здесь использован популярный прием функционального программирования "сумка". Это
позволяет получить результат сразу, без обратного прохода.
Функциональный язык Бэкуса.
LISP, созданный в начале 60-х годов, не единственный функциональный язык, хотя и самый
распространенный.
Интересный функциональный язык РЕФАЛ был разработан в 70-х годах нашим
соотечественником Турчиным и исподльзовал математическую модель нормальных
алгорифмов Маркова.
— 97 —
Первым языком функционального программирования был язык LISP и многие базовые понятия этого языка стали классикой функционального программирования. Базовые функции функционального программирования: car(x) - дает первый элемент списка х ; cdr(х) - хвост списка ( список без первого элемента) ; cons(x,y) - добавляет элемент х к списку у; append(x,y) - добавляет список y к списку x ; Примеры. Пусть x = (1, 2, 3) y = (4, 5) car(x) = (1); cdr(х) = (2, 3); cons(x,y) = ((1, 2, 3), 4, 5); append(x,y) = (1, 2, 3, 4, 5). Синтаксис LISP достаточно архаичный, поэтому воспользуемся способом записи функциональных программ с помощью специальной нотации, ставшей популярной с легкой руки Хендерсона. Примеры. Функция дл вычисления длины списка дл(х) if(x) = nil then 0 else дл(cdr(x)) + 1 Вычислим функцию для конкретного списка. дл(A, B, C) = дл(B, C) + 1 дл(B, C) = дл(C) + 1 дл(C) = дл(nil) + 1 дл (nil) = 0 "Пройдя" в обратном направлении можно получить числовое значение. Обращение списка обр, то есть список A, B, C обратится в список C, B, A обр(x, y) if x = nil then y else обр(cdr(x), cons(car(x), y)) Вычислим функцию для конкретного списка обр(A, B, C, nil) = обр((B, C), (A)) обр((B, C), (A)) = обр((C), (B, A)) обр((C), (B, A)) = обр((nil), C, B, A) Здесь использован популярный прием функционального программирования "сумка". Это позволяет получить результат сразу, без обратного прохода. Функциональный язык Бэкуса. LISP, созданный в начале 60-х годов, не единственный функциональный язык, хотя и самый распространенный. Интересный функциональный язык РЕФАЛ был разработан в 70-х годах нашим соотечественником Турчиным и исподльзовал математическую модель нормальных алгорифмов Маркова. — 97 —
Страницы
- « первая
- ‹ предыдущая
- …
- 95
- 96
- 97
- 98
- 99
- …
- следующая ›
- последняя »