circular-enum-0.1.0.0: Make bounded enum types circular
Copyright(c) 2023 Mirko Westermeier
LicenseMIT
Safe HaskellSafe-Inferred
LanguageHaskell2010

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.

Synopsis

Documentation

csucc :: (Eq a, Enum a, Bounded a) => a -> a Source #

Circular version of succ

cpred :: (Eq a, Enum a, Bounded a) => a -> a Source #

Circular version of pred