ابتدای محتوای صفحه
۶ - ۹تایپکلاس 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'
چطور؟