zwvista

导航

Haskell语言学习笔记(94)Enum Bounded

Enum

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 中的类型类。它可以被用来描述线性的有序类型。

Bounded

class  Bounded a  where
    minBound, maxBound :: a

Bounded 是 Prelude 中的类型类。它可以被用来描述带边界值的有序类型。

示例

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
  • pred succ
    分别返回Enum中某个值的前一个值和后一个值
  • fromEnum toEnum
    Enum中的值与整数之间的相互转换。
  • enumFrom...
    返回Enum中值的序列
  • minBound maxBound
    分别返回类型中的最大最小值

posted on 2019-07-10 16:12  zwvista  阅读(249)  评论(0编辑  收藏  举报