Функцыянальнае праграмаванне — парадыгма праграмавання, якая разглядае вылічэнні як разлікі матэматычных функцый, і пазбягае станаў і зменных даных. Адносіцца да дэкларатыўнай парадыгмы праграмавання, гэта азначае, што праграмы складаюцца з выразаў. У функцыянальным кодзе выхадное значэнне залежыць толькі ад аргументаў на ўваходзе функцыі, таму пры выкліку функцыі f двойчы з тым жа значэннем аргумента х будзе атрыманы той жа вынік f(x) кожны раз. Ліквідацыя пабочных эфектаў, г.зн. змен стану, якія не залежаць ад параметраў функцыі, можа зрабіць нашмат лягчэйшым разуменне і прадказанне паводзін праграмы, што з'яўляецца адным з ключавых матываў для развіцця функцыянальнага праграмавання.
Функцыянальнае праграмаванне мае свае карані ў лямбда-злічэнні, фармальнай сістэме, распрацаванай у 1930-я гады для даследаванняў вылічальнасці, праблемы развязвальнасці, вызначэння функцый, прымянення функцый, і рэкурсіі.[1]
У асноўным увагу на функцыянальныя мовы праграмавання, асабліва «чыста функцыянальныя», звяртаюць акадэмічныя даследчыкі, а не распрацоўшчыкі камерцыйнага праграмнага забеспячэння. Тым не менш, функцыянальны стыль праграмавання падтрымліваецца спецыялізаванымі мовамі, сярод якіх Erlang (паралельныя праграмы)[2] [3], R (статыстыка)[4], Mathematica (сімвальныя вылічэнні)[5], J і K (фінансавы аналіз), і інш.
Праграмаванне ў функцыянальным стылі таксама магчымае ў мовах, якія не прызначаны спецыяльна для функцыянальнага праграмавання. Напрыклад, імператыўная мова праграмавання Perl з'яўляецца прадметам кнігі, якая апісвае, як прымяніць канцэпцыі функцыянальнага праграмавання.[6] C# 3.0 і Java 8 дадалі канструкцыі, якія робяць праграмаванне ў функцыянальным стылі больш натуральным.