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.
ภาษาการเขียนโปรแกรมเชิงฟังก์ชันคือภาษาโปรแกรมที่ยึดตามกระบวนทัศน์การเขียนโปรแกรมเชิงฟังก์ชัน กระบวนทัศน์ของการเขียนโปรแกรมนี้เน้นการใช้ฟังก์ชันล้วนๆ ในความหมายทางคณิตศาสตร์ การใช้ฟังก์ชันชั้นหนึ่ง การประกาศเหนือโค้ดที่จำเป็น และบ่อยครั้ง (แต่ไม่เสมอไป) ระบบประเภทที่ซับซ้อนกว่า ในกรณีที่ภาษาการเขียนโปรแกรมที่จำเป็นมักจะชอบการเขียนโค้ดในลักษณะทีละขั้นตอน ภาษาเชิงฟังก์ชันจะส่งเสริมองค์ประกอบของฟังก์ชันเพื่อให้งานสำเร็จ ฟังก์ชันแฟกทอเรียลอาจเป็นตัวอย่างได้ดีที่สุด: การใช้งานโปรแกรมเชิงฟังก์ชันของแฟกทอเรียล (Haskell) --- ```haskell factorial 0 = 1 factorial n = n * factorial (n - 1) ``` การเขียนโปรแกรมเชิงบังคับของ factorial (Python) ) --- ```python def factorial(n): result = 1 ถ้า n > 1: for i in range(1, n+1): result = result * i return result ``` (โปรดทราบว่าไม่มีทั้งสองอย่างเลย) ตัวอย่างจะจัดการกับจำนวนลบ) สิ่งสำคัญที่ควรทราบคือแม้ว่าตัวอย่างของการเขียนโปรแกรมเชิงฟังก์ชันอาจอ่านได้ง่ายกว่า แต่ก็อาจทำงานช้ากว่าเช่นกัน บ่อยครั้งเป็นกรณีที่เพื่อให้ตรงกับประสิทธิภาพของโซลูชันที่จำเป็น วิธีการเชิงฟังก์ชันจะต้องประนีประนอมกับความสามารถในการอ่านอย่างมาก
spam fails_task not_appropriate hate_speech sexual_content moral_judgement political_content toxicity humor violence