Шаг 20.
Основы языка Haskell. Основные типы данных, операции, способы определения функций. Постоянные функции

    На этом шаге мы рассмотрим такие функции.

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

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

    Итак, в языке 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
Файл с примерами можно взять здесь.

    На следующем шаге мы рассмотрим определение функций с помощью условных выражений.




Предыдущий шаг Содержание Следующий шаг