۶ - ۳بازگشت به بول
برای اینکه یه آشنایی کلی با اطلاعات تایپکلاس پیدا کنیم، نگاهی به تایپ 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 های هسکله که میشه با اسمِ توابع یا تایپ سیگنچر ِشون، خیلی از کتابخونههای هسکل رو جستجو کنین. دستتون که با تایپهای هسکل راه بیوفته، با وارد کردن تایپِ تابع مورد نظر، خودِ تابع رو پیدا میکنین.