機能的なプログラミング言語は、機能的なプログラミングパラダイムを順守するプログラミング言語です。このプログラミングのパラダイムは、数学的な意味での純粋な機能の使用、ファーストクラス関数の使用、命令コードに対する宣言、および（常にではない）より複雑なタイプシステムを強調しています。命令的なプログラミング言語が通常、段階的な方法でコードを作成することを好む場合、機能的言語は機能の構成を促進してタスクを達成します。要因関数はおそらくこれの最も例です。
要因の機能的プログラミング実装（Haskell）
---
「ハスケル
要因0 = 1
要因n = n *要因（n -1）
`` `
要因（Python）の命令的なプログラミングの実装
---
`` python
def factorial（n）：
    結果= 1
    n> 1の場合：
        範囲のiの場合（1、n+1）：
            結果=結果 * i
        返品結果
`` `

（これらの例はどちらも負の数を処理しないことに注意してください。）
機能的なプログラミングの例は読みやすいかもしれませんが、実行が遅くなる可能性があることに注意することが重要です。多くの場合、命令的なソリューションのパフォーマンスに合わせるためには、機能的アプローチが読みやすさでかなり妥協する必要があります。
A functional programming language is a programming language that adheres to the functional programming paradigm. This paradigm of programming emphasizes the use of pure functions in the mathematical sense, use of first-class functions, declarative over imperative code, and often (though not always) more complex type systems. Where imperative programming languages usually prefer writing code in a step-by-step manner, functional languages promote the composition of functions to accomplish tasks. The factorial function is perhaps most illustrative of this:
Functional programming implementation of factorial (Haskell)
---
```haskell
factorial 0 = 1
factorial n = n * factorial (n - 1)
```
Imperative programming implementation of factorial (Python)
---
```python
def factorial(n):
    result = 1
    if n > 1:
        for i in range(1, n+1):
            result = result * i
        return result
```

(Note that neither of these examples will handle negative numbers.)
It is important to note that while examples of functional programming may be easier to read, they may also be slower to run. It is often the case that in order to match the performance of an imperative solution, a functional approach must compromise considerably on readability.