Tolong jelaskan mengenai Pemrograman fungsional

Dalam ilmu komputer, pemrograman fungsional (bahasa Inggris: Functional programming) adimana program dibangun dengan menerapkan dan menyusun fungsi. Ini adalah paradigma pemrograman deklaratif di mana definisi fungsi adalah pohon ekspresi yang masing-masing mengembalikan nilai, bukan urutan pernyataan imperatif yang mengubah status program.

Dalam pemrograman fungsional, fungsi diperlakukan sebagai warga kelas satu, yang berarti bahwa mereka dapat terikat ke nama (termasuk pengenal lokal), diteruskan sebagai argumen, dan dikembalikan dari fungsi lain, seperti yang bisa dilakukan tipe data lainnya. Hal ini memungkinkan program untuk ditulis dalam gaya deklaratif dan dapat disusun, di mana fungsi-fungsi kecil digabungkan secara modular..

Pemrograman fungsional terkadang diperlakukan sebagai sinonim dengan pemrograman fungsional murni, bagian dari pemrograman fungsional yang memperlakukan semua fungsi sebagai fungsi matematika deterministik, atau fungsi murni. Ketika fungsi murni dipanggil dengan beberapa argumen yang diberikan, itu akan selalu mengembalikan hasil yang sama, dan tidak dapat dipengaruhi oleh keadaan yang bisa berubah atau efek samping lainnya.