Математическое введение в декларативное программирование. Зюзысов В.М. - 71 стр.

UptoLike

Составители: 

Приложения, написанные на языке Haskell.
Познакомимся с основными чертами языка Haskell.
В функциональном программирование одно из основных понятий это понятие ве-
личины. Величинаабстрактная сущность (объект), что мы рассматриваем как ответ. Ве-
личина может быть атомарной или составной (сложной). Атомарные величины, обычные
для функциональных языков, суть различные виды чисел, символы (например,
a)
и логи-
ческие значения
True
и
False
. Составными структурами в языке Haskell являются список
конечная последовательность величин одной природы (одного типа) – примером может
служить список из трех чисел
[1,2,3]
, пара (например,
(a,5) –
компонентами пары в
данном случае служат символ и целое число), функция
(математическая функция
x x+1 записывается на языке как
\x -> x+1
так называемое «λ-обозначение») и дру-
гие.
Все величины в языке Haskell являются так называемыми объектами первого клас-
саони могут быть фактическими аргументами функций, возвращаться как результат вы-
числения функций, размещаться в структурах данных и т. п.
Неформально, выражение символ или группа символов, представляющих неко-
торый математический процесс или какое-то количество. В чисто функциональных языках
все вычисления выполняются через оценку выражений, чтобы выдать какие-то величины.
Как уже говорилась ранее, альтернативой операторам присваивания и циклам в
функциональном языке является рекурсия. Например, вычисление наибольшего общего
делителя двух неотрицательных целых чисел может быть записано математически в сле-
дующей рекурсивной форме:
u, если v=0,
gcd (u, v) = gcd (v, u mod v), если v 0,
и не определено при v=0, u=0.
Но в языке Haskell запись почти похожа:
gcd 0 0 = error gcd 0 0 is undefined
gcd u 0 = u
gcd u v = gcd v (u `rem`v)
Функциями первого порядка называются функции, аргументами для которых слу-
жат величины, сами не являющиеся функциями. Функции второго порядка оперируют с
функциями первого порядка и т. д. Функцией высокого порядка называется функция, не
являющаяся функцией первого порядка, другими словами, такая функция имеет в качест-
ве аргумента какую-нибудь функцию.
Мы суммируем особенности функциональных языков программирования и функ-
циональных программ следующим образом:
Все программы и процедуры являются функциями и ясно различают входящие вели-
чины (параметры) от своих выходящих величин (результатов).
Нет переменных или присваиванийпеременные заменяются параметрами.
Нет цикловциклы заменяются рекурсивными вызовами.
Величина функции зависит только от величины ее параметров и не зависит от порядка
вычисления или пути выполнения, который привел к вызову функции (прозрачность
по ссылкам).
Функции есть одна из структур данных.
Хотя возможно использовать императивные языки, чтобы написать некоторые
функциональные программы, присущие им ограничения этих языков делает трудным или
71