جمله زیر یه تعریف ریشه ای از Functional Programming هست.
variables in functional programming do not vary
یعنی اگر برنامه ای بنویسیم که تمامی متغیرهای immutable یا غیرقابل تغییر باشن میتونیم ادعا کنیم که برنامه ما از پارادایم functional استفاده میکنه. ربان هایی مثل clojure از این پاردایم استفاده میکنن.
برای اینکه متغیرها تغییر نکنن نیاز هست که برنامه شامل اجرای توابع پشت سر هم باشن. یعنی توی یک زبان functional چیزی که میبینیم یه رشته از توابع هستن که پشت سر هم اجرا میشن