۱۹ - ۱فولدِبِل

این تایپکلاس رو حداقل از فصل ۳ در تایپ سیگنچرها میدیدیم، اما اون اول‌ها می‌گفتیم که میشه یه ‏‎Foldable‎‏ رو به چشم لیست ببینین. همونطور که در فصل فولدها دیدین، لیست‌ها قطعاً ساختارهای داده‌ی فولدبل هستن. اما اونها تنها ساختارهای داده‌ی فولدبل نیستن، پس این فصل ایده‌ی کاتامورفیسم رو گسترش و به خیلی از نوع‌داده‌ها تعمیم میده.

فولد کردنِ لیست در واقع راهی برای کاهش ِ مقادیر توی یه لیست به یک مقدارِ خلاصه از طریق اعمال ِ یه تابع بصورتِ بازگشتی ِه. تابع‌های فیلترینگ و نگاشت هم میشه با فولد نوشت، ولی اون توابع در نهایت یه لیست کاملاً جدید برمی‌گردونن (بجای یه مقدار)؛ این لیست جدید همون مقدارِ خلاصه از لیست قدیمی‌ه که از بعد از کاهش، یا تغییر از طریقِ اعمالِ تابع بدست میاد.

تابعِ فولدینگ همیشه وابسته به یه نمونه ای از ‏‎Monoid‎‏ ِه. اکثر فولدهایی که قبلاً نوشتیم، در حقیقت برمبنای چندتا عملیات‌های مانویدی ِ ضمنی کار می‌کردن. همونطور که تو این فصل می‌بینیم، تعمیمِ کاتامورفیسم به نوع‌داده‌های دیگه ملزم به درکِ مانوید ِ ساختارهاشون، و در بعضی موارد صریح‌تر کردنِ مانوید ِشونه.

در این فصل:

  • تایپکلاسِ ‏‎Foldable‎‏ و عملیات‌های اصلی‌ش رو میگیم؛

  • ذاتِ مانویدی ِ فولدینگ رو توضیح میدیم؛

  • عملیات‌های استاندارد که از فولدینگ مشتق میشن رو میگیم.