۶ - ۳بازگشت به بول

برای اینکه یه آشنایی کلی با اطلاعات تایپکلاس پیدا کنیم، نگاهی به تایپ ‏‎Bool‎‏ میندازیم. اگه خاطرتون باشه با دستورِ ‏‎:info‎‏ در GHCi می‌تونستیم اطلاعات رو استعلام کنیم (که شامل اطلاعات در موردِ تایپکلاسِ هر تابع یا تایپ – و بعضی مقادیر – هم میشد):

Prelude> :info Bool
data Bool = False | True
instance Bounded Bool
instance Enum Bool
instance Eq Bool
instance Ord Bool
instance Read Bool
instance Show Bool

اطلاعاتی که می‌گیریم، تایپکلاس‌هایی که ‏‎Bool‎‏ ازشون نمونه داره رو نشون میده. تعریفِ داده‌ی ‏‎Bool‎‏ و آدرسِ فایلِ منبع‌ای که نوع‌داده و نمونه‌هاش توش تعریف شدن رو هم میگه، که ما اینجا نیاوردیم.

هرکدوم از نمونه‌ها تویِ اون لیست، از یه تایپکلاسیِ‌ه که تایپِ ‏‎Bool‎‏ ازش نمونه داره؛ و هر نمونه، یک توصیفِ یکتا از طرزِ استفاده‌ی تایپِ ‏‎Bool‎‏ از متودهای اون تایپکلاس‌ه. تو این فصل فقط چندتا از اینها رو نگاه می‌کنیم: ‏‎Eq‎‏، ‏‎Ord‎‏، و ‏‎Show‎‏. ولی اگه بخوایم هر کدوم رو مختصر توصیف کنیم:

۱.

‏‎Bounded‎‏ برای تایپ‌هایی که حدِ بالا و حدِ پایین دارن.

۲.

‏‎Enum‎‏ برای چیزهایی که میشه شمارش بشن.

۳.

‏‎Eq‎‏ برای چیزهایی که میشه تساوی‌شون رو بررسی کرد.

۴.

‏‎Ord‎‏ برای چیزهایی که میشه در یه تسلسلِ ترتیب‌دار قرار بگیرن.

۵.

‏‎Read‎‏ نوشته‌ها رو پارس می‌کنه. ازش استفاده نکنین. جدی میگیم، استفاده نکنین.

۶.

‏‎Show‎‏ برای تبدیل مقادیر به نوشته استفاده میشه.

اگه از بحث‌هامون درباره‌ی تایپ‌های عددی یادتون باشه، از یه جور سلسله‌مراتب در تایپکلاس‌ها صحبت کردیم.* همه‌ی اعدادِ ‏‎Fractional‎‏ تایپکلاس ‏‎Num‎‏ رو دارن ولی همه‌ی ‏‎Num‎‏‌ها ‏‎Fractional‎‏ نیستن. همه‌ی اعضای ‏‎Ord‎‏ باید عضو ‏‎Eq‎‏ باشن و همه‌ی اعضای ‏‎Enum‎‏ باید عضو ‏‎Ord‎‏ باشن. اگه بخوایم چیزی رو توی یه لیستِ شمارشی بذاریم، باید قابلیتِ مرتب شدن رو داشته باشه؛ برای اینکه بتونیم چیزی رو مرتب کنیم، باید برای تساوی قابلِ قیاس باشه.

*

برای پیدا کردن اطلاعات در مورد نوع‌داده‌ها و تایپکلاس‌های هسکل می‌تونین از یه موتورِ جستجو مثل Hoogle استفاده کنین. هوگل یه موتور جستجو برای API های هسکل‌ه که میشه با اسمِ توابع یا تایپ سیگنچر ِشون، خیلی از کتابخونه‌های هسکل رو جستجو کنین. دست‌تون که با تایپ‌های هسکل راه بیوفته، با وارد کردن تایپِ تابع مورد نظر، خودِ تابع رو پیدا می‌کنین.