На этом шаге мы рассмотрим такие функции.
Функциональная программа представляет собой набор определений (деклараций) функций, которые могут определяться с помощью других функций или рекурсивно - через самих себя.
Используя язык функционального программирования, программист обязан представить решение задачи в виде совокупности взаимосвязанных функций, вычисление значений которых приведёт к желаемому результату.
Итак, в языке Haskell есть только функции (переменных нет).
Имена функций начинаются со строчных букв.
Постоянные функции имеют следующий синтаксис:
<Имя_функции>=<Выражение>
Значением функции является значение вычисленного выражения.
a = 3.0; b = 4.0; c = 5.0 s = 1/2*a*b
В заключение приведем еще несколько примеров таких функций.
-- Демонстрация описания постоянных функций и простейших -- функций, содержащих бинарные операции -- ******************************************* -- Функция, возвращающая значение типа Integer x:: Integer x = 12102007 ---------------------------------------------- -- Функция, возвращающая значение типа Integer y:: Integer y = -2200704 --------------------------------------------- -- Функция, возвращающая значение типа Double z:: Double z = 123.999999999 ----------------------------------------------------- -- Функция, тип возвращаемого значения которой интер- -- претатор определит из контекста "самостоятельно" --------------------------------------------------- k = -0.234 ------------------------------------------- -- Функции, возвращающие значение типа Bool -- (вариант записи) ------------------------------ answerY:: Bool; answerY = True answerN:: Bool; answerN = False ---------------------------------------------- -- Функции, тип возвращаемого значения которых -- интерпретатор определяет "сам" из контекста ---------------------------------------------- f1 = (z-0.999999999)/2 f2 = 5-7 `mod` 3 f3 = (x+y) `div` 3 f4 = ((f3+1-435) `div` 33)*100000 f5 = (5,2.3,True) -------------------------------------------------------- -- Предикаты (без аргументов), тип которых интерпретатор -- определяет из контекста p1 = True && False p2 = not False || not True p3 = z>k p4 = answerN && answerY || y<0 && x>0 --------------------------------------------------------- -- Неудачные тестовые примеры (их содержит функция test): ---------------------------------------------------------- test = f1==61.5 && f2==4 && f3==3300434 && f4==10000000000 && not p1 && p2 && p3 && p4
На следующем шаге мы рассмотрим определение функций с помощью условных выражений.