機能プログラミングは、計算が数学機能の評価として扱われるプログラミングパラダイムであり、可変データが回避されます。これは、プログラムの状態の変更とデータの変更に依存する命令的なプログラミングとは異なります。Haskell、Lisp、Scheme、MLなどの機能言語は、不変性、副作用なし、一流および高次の機能、再帰および宣言的アプローチを促進します。一方、C、C ++、Java、Pythonなどの必須言語は、プログラム状態を変更する一連のステートメントを提供し、コードがステップバイステップを実行する方法を提供することに焦点を当てています。
Functional programming is a programming paradigm where computation is treated as the evaluation of mathematical functions and mutable data is avoided. It is different from imperative programming, which relies on changing the state of a program and modifying data. Functional languages like Haskell, Lisp, Scheme, and ML promote immutability, no side-effects, first-class and higher-order functions, recursion and declarative approach. Meanwhile imperative languages like C, C++, Java, Python focus on giving a sequence of statements that change a program state and how the code should execute step-by-step.