Programowanie funkcjonalne jest paradygmatem, który próbuje rozwiązać problemy obliczeniowe poprzez łańcuchową ocenę funkcji, których wynik zależy od ich danych wejściowych, a nie od stanu programu. W tym stylu programowania skutki uboczne i zmienne dane są przestarzałe i zwykle ściśle izolowane.