class Enum a where succ, pred :: a -> a toEnum :: Int -> a fromEnum :: a -> Int enumFrom :: a -> [a] -- [n..] enumFromThen :: a -> a -> [a] -- [n,n'..] enumFromTo :: a -> a -> [a] -- [n..m] enumFromThenTo :: a -> a -> a -> [a] -- [n,n'..m]
Enum 是 Prelude 中的類型類。它能夠被用來描述線性的有序類型。code
class Bounded a where minBound, maxBound :: a
Bounded 是 Prelude 中的類型類。它能夠被用來描述帶邊界值的有序類型。class
Prelude> data XXX = AA|BB|CC|DD|EE|FF deriving (Bounded, Enum, Show) Prelude> succ AA BB Prelude> pred DD CC Prelude> fromEnum CC 2 Prelude> toEnum 3 :: XXX DD Prelude> enumFrom CC -- [CC ..] [CC,DD,EE,FF] Prelude> enumFromThen AA CC -- [AA,CC ..] [AA,CC,EE] Prelude> enumFromTo AA DD -- [AA .. DD] [AA,BB,CC,DD] Prelude> enumFromThenTo AA CC FF -- [AA,CC .. FF] [AA,CC,EE] Prelude> toEnum 48 :: Char '0' Prelude> fromEnum 'a' 97 Prelude> minBound :: XXX AA Prelude> maxBound :: XXX FF