اولا که متغیر وجود داره اما به صورت immutable یعنی مقدار هنگام ایجاد به یک متغیر داده میشه و تا پایان عمرش همون باقی می مونه (تقریبا چیزی مثل متغیر های final در جاوا).
دو مزیت بزرگ برنامه نویسی تابعی :
1) ساخت چیزهای پیچیده در کمترین زمان با میکس کردن چندین تابع (Productivity)
2) ساخت برنامه های مولتی ترد بدون نگرانی در مورد تداخل تردها و یا بلاک کردن قسمت های کد برای حفاظت از تغییرات استفاده همزمان از منابع.(چون اصولا ما اینجا متغییر هامون تغییر نمی کنن یعنی مدل Share State استفاده نمیشه بنابراین لازم نیست نگران این باشیم که یک متغیر همزمان در دست چندین ترد هست و ممکنه تغییر کنه.به طور مثال مدل Actor در زبان Erlang)