ابتدای محتوای صفحه
۶ - ۹تایپکلاس Enum
این تایپکلاس کمی با تایپکلاس Ord فرق داره. تایپکلاس Enum شامل تایپهایی میشه که قابل شمارش باشن، به عبارت دیگه مقادیر قبلی و بعدیشون مشخصه. تا الان حتماً یاد گرفتین چطور اطلاعات رو استعلام و ازشون استفاده کنین:
Prelude> :info Enum
class Enum a where
succ :: a -> a
pred :: a -> a
toEnum :: Int -> a
fromEnum :: a -> Int
enumFrom :: a -> [a]
enumFromThen :: a -> a -> [a]
enumFromTo :: a -> a -> [a]
enumFromThenTo :: a -> a -> [a]
instance Enum Ordering
instance Enum Integer
instance Enum Int
instance Enum Char
instance Enum Bool
instance Enum ()
instance Enum Float
instance Enum Doubleاعداد و کاراکترها همگی مقادیرِ قبلی و بعدیشون مشخصاند:
Prelude> succ 4
5
Prelude> pred 'd'
'c'
Prelude> succ 4.5
5.5ممکنه متوجه شده باشین که بعضی از اون توابع، خروجی با تایپِ لیست برمیگردونن. این توابع یه مقدار اولیه رو میگیرن و با مقادیر پَسین ِ اون تایپ، یه لیست میسازن:
Prelude> enumFromTo 3 8
[3,4,5,6,7,8]
Prelude> enumFromTo 'a' 'f'
"abcdef"یه نگاه مختصر هم به enumFromThenTo میندازیم:
Prelude> enumFromThenTo 1 10 100
[1,10,19,28,37,46,55,64,73,82,91,100]با نگاه به لیستِ خروجی، آیا میتونین بگین این تابع چه کاری انجام میده؟ اگه مقادیرِ 0 10 100 رو بهش بدیم چه جوابی میگیریم؟ آرگومانهای 'a' 'c' 'z' چطور؟