| Copyright | (c) 2023-2026 Mirko Westermeier |
|---|---|
| License | MIT |
| Safe Haskell | Safe-Inferred |
| Language | Haskell2010 |
Data.Enum.Circular
Description
Sometimes, bounded enum types should be circular. Consider this enum type of directions:
data Direction = North
| East
| South
| West
deriving (Eq, Enum, Bounded)
The Enum instance allows for succ North to be East and succ East
to be South. But in this case, one would like to have some kind of
succ with succ West = North again. With Eq and Bounded instances,
the functions defined in this module act like circular versions of succ
and pred.
Note: this module is designed for small, finite enum types created with
deriving Enum. It is not suitable for types where
fromEnum maxBound + 1 overflows Int, such as Int or Word itself.
Documentation
Constructors
| Circular | |
Fields
| |
Instances
| (Enum a, Bounded a) => Enum (Circular a) Source # | |
Defined in Data.Enum.Circular Methods succ :: Circular a -> Circular a # pred :: Circular a -> Circular a # fromEnum :: Circular a -> Int # enumFrom :: Circular a -> [Circular a] # enumFromThen :: Circular a -> Circular a -> [Circular a] # enumFromTo :: Circular a -> Circular a -> [Circular a] # enumFromThenTo :: Circular a -> Circular a -> Circular a -> [Circular a] # | |
| Show a => Show (Circular a) Source # | |
| Eq a => Eq (Circular a) Source # | |