۱ - ۲برنامهنویسی تابعی چیه؟
برنامهنویسیِ تابعی یه حیطه از برنامهنویسیِ کامپیوتره که تکیه بر توابعی داره که اون توابع برپایهی توابعِ ریاضی مُدل شدن. ماهیتِ برنامهنویسی تابعی اینه که برنامهها با ترکیبی از بیانیه یا expressionها درست میشن. بیانیه شاملِ concrete values یا مقادیرِ معین، variable یا متغیرها، و همچنین function یا تابعهاست. توابع تعریف دقیقتری هم دارن: بیانیههاییاند که به یک آرگومان یا ورودی اعمال شده، و بعد از اعمال شدن، میشه اونها رو ساده یا محاسبه کرد. در هسکل، و بطور کلی در برنامهنویسی تابعی، توابع ممتاز اند: میشه ازشون به عنوان یک مقدار استفاده کرد، یا به عنوان آرگومان (یا ورودی) ِتابعهای دیگه ارائه بشن. بعداً که بیشتر پیش رفتیم، معنی لغاتی که استفاده کردیم رو دقیقتر توضیح میدیم.
همهی زبانهای برنامهنویسیِ تابعی بر روی جبر لاندا پایهگذاری شدن. بعضی از این زبانها امکاناتی رو دارند که نمیشه با بیانیههای لاندا نوشت. هسکل یک زبان تابعی pure یا خالصه، یعنی همهی امکانات هسکل رو میشه با بیانیههای لاندا نوشت. جلوتر در کتاب بیشتر روی این مفهومِ خلوص وقت میذازیم.
گاهی اوقات، کلمهی خلوص در برنامهنویسی تابعی به عنوان referential transparency یا شفافیتِ مرجع استفاده میشه. منظور از شفافیت مرجع اینه که در برنامهنویسیِ تابعیِ خالص، یک تابع به ازای یک ورودیِ مشخص، همیشه فقط و فقط یک جواب میده، درست مثل توابع ریاضی.
این خلوصِ توابع باعث شده هسکل تجریدپذیری و ترکیبپذیری بالایی هم داشته باشه. تجرید (انتزاع) کمک میکنه بخشهای تکراری و مشترک رو به کد کلیتر تبدیل کنین، و نهایتاً برنامهتون رو خیلی مختصرتر و گویاتر بنویسین. برنامههای هسکل از تابعهای جدا و مستقل از هم درست شدن، شبیه تکههای لِگو: تابعها مثل اون آجرها میمونن که میشه سَرِهم و جدا بشن.
این قابلیتها گرامر ِهسکل رو، همونطور که به زودی میبینید، خیلی ساده میکنن.