ФЭНДОМ


Lambda

Функциональное программирование - парадигма программирования, в которой процесс вычисления трактуется как вычисление значений математической функции. В основе функционального программирования лежит Лямбда-исчесление.

Функция в функциональном программировании/Функция в императивном программированииПравить

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

Python

При одно и том же входном параметре (5) функция возвращает разные результаты (15, 20).

>>> a = 10
>>> def my_func(b):
... 	return a + b
... 
>>> my_func(5)
15
>>> a = 15
>>> my_func(5)
20

Haskell

Функция возвращает всегда одно и то же значение (10) при одинаковом входном параметре (5).

Prelude> myFunc x = 2 * x
Prelude> myFunc 5
10
Prelude> myFunc 5
10

Популярные языки функционального программированияПравить

Основные концепцииПравить

  • Функции высших порядков - функции которые могут принимать в качестве аргументов и возвращать другие функции.

Haskell

Prelude> addOne = \x -> x + 1
Prelude> addTwo = addOne . addOne
Prelude> addTwo 2
4


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

Haskell

Prelude> addOne x = x + 1
Prelude> addOne 1
2
Prelude> addOne 2
3
Prelude> addOne 3
4


  • Рекурсия. Цикл в функциональных языках реализуется в виде рекурсии. Рекурсивные функции вызывают сами себя, позволяя операции выполняться снова и снова. Для использования рекурсии может понадобиться большой стек, но это можно избежать в случае хвостовой рекурсии.

Haskell

Prelude> loop f x = if x >= 5 then x else loop f (x + 1)
Prelude> addOne x = x + 1
Prelude> loop addOne 0
5

Обнаружено использование расширения AdBlock.


Викия — это свободный ресурс, который существует и развивается за счёт рекламы. Для блокирующих рекламу пользователей мы предоставляем модифицированную версию сайта.

Викия не будет доступна для последующих модификаций. Если вы желаете продолжать работать со страницей, то, пожалуйста, отключите расширение для блокировки рекламы.

Также на ФЭНДОМЕ

Случайная вики