۱ - ۱۰خلاصه

نکات اصلی این فصل که باید یادتون بمونه، اینها هستن:

  • برنامه‌نویسیِ تابعی بر پایه‌ی بیانیه‌هاییه که شامل متغیرها، مقادیر ثابت، بیانیه‌هایی که با بیانیه‌های دیگه ترکیب شدن، و توابع هستند.

  • توابع یک سر و یک بدنه دارن که می‌تونن به آرگومان‌ها اعمال و بعد ساده (یا حساب) بشن و نتیجه بدن.

  • متغیرها ممکنه در تعریفِ تابع قید بشن، و یه متغیر مقیّد در همه جای تابع، یک مقدار می‌گیره.

  • همه‌ی توابع فقط یک آرگومان می‌گیرن و فقط یک جواب برمی‌گردونن.

  • توابع، نگاشتِ مجموعه‌ای از ورودی‌ها به مجموعه‌ای از خروجی‌ها اند. با یک ورودیِ مشخص، همیشه یک خروجی مشخص میدن.

    همه‌ی اینها در هسکل – یا هر زبان تابعیِ خالص دیگه – صدق می‌کنند، چرا که هسکل از جنبه‌ی مفهومی، در واقع جبر لاندا هست. بخوایم دقیق‌تر بگیم، هسکل یک جبر لاندا ِ نوعی یا typed (بعداً از تایپ‌ها بیشتر حرف میزنیم) به حساب میاد، که البته با تغییرات ظاهری زیادی، نوشتن‌ش برای ما آدمها ساده‌تر شده. با این حال، هسکل در ذات با جبر لاندا یکسانه. طور دیگه‌ای بخوایم بگیم، مفهومِ برنامه‌های هسکل در حساب کردنِ بیانیه‌هاست تا اجرای دستورات (البته هسکل قابلیت اجرای دستورات رو هم داره، بعداً می‌بینیم). جلوتر که در رابطه با مفاهیمی که به نظر خیلی پیچیده میان، مثل ترکیب توابع، مونَدها و ترکیب‌کننده‌های پارسِر صحبت می‌کنیم، باز هم به جبر لاندا اشاره خواهیم داشت. اگه هیچ کدوم از اون لغات رو نمی‌شناسین اصلاً نگران نشین. اگه این فصل رو فهمیدین، زیربنای لازم برای درک همه‌ی اون مفاهیم رو دارین.