Кубенский А.А. Функциональное программирование.
Глава 1. Элементы функционального программирования.
Особенности этой программы
function squareRoots
(a, b, c : Real) : (Boolean, Real, Real);
function discriminant (a, b, c : Real) : Real;
begin
return sqr(b) – 4 * a * c
end;
const discr = discriminant(a, b, c); { Значение дискриминанта }
const complexFlag = discr < 0; { Определяем, вещественные или мнимые корни }
begin
return (complexFlag,
if complexFlag then ((-b) / (2*a), sqrt(-discr) / (2*a))
else ((-b + sqrt(discr)) / (2*a), (-b – sqrt(discr)) / (2*a))
)
end;
Вместо переменных и присваиваний используются константы
Составные значения легко описываются...
...и создаются
Вместо условных операторов используются условные выражения
Константы получают динамически вычисляемые значения
Тело функции представляет собой суперпозицию применений функций для описания функциональной зависимости результата от входных данных
Результаты не зависят от порядка вычислений (возможны параллельные вычисления)