universe-0.4.0.5: Classes for types where we know all the values

Safe HaskellNone

Data.Universe

Synopsis

Documentation

Bottoms are ignored for this entire module: only fully-defined inhabitants are considered inhabitants.

class Universe a whereSource

Creating an instance of this class is a declaration that your type is recursively enumerable (and that universe is that enumeration). In particular, you promise that any finite inhabitant has a finite index in universe, and that no inhabitant appears at two different finite indices.

Methods

universe :: [a]Source

class Universe a => Finite a whereSource

Creating an instance of this class is a declaration that your universe eventually ends. Minimal definition: no methods defined. By default, universeF = universe, but for some types (like Either) the universeF method may have a more intuitive ordering.

Methods

universeF :: [a]Source

Instances

Finite Bool 
Finite Char 
Finite Int 
Finite Int8 
Finite Int16 
Finite Int32 
Finite Int64 
Finite Ordering 
Finite Word 
Finite Word8 
Finite Word16 
Finite Word32 
Finite Word64 
Finite () 
Finite All 
Finite Any 
Finite Void 
Finite a => Finite (Dual a) 
Finite a => Finite (Sum a) 
Finite a => Finite (Product a) 
Finite a => Finite (First a) 
Finite a => Finite (Last a) 
Finite a => Finite (Maybe a) 
Finite a => Finite (Identity a) 
(Ord a, Finite a, Finite b) => Finite (a -> b) 
(Finite a, Finite b) => Finite (Either a b) 
(Finite a, Finite b) => Finite (a, b) 
Finite (f a) => Finite (IdentityT f a) 
(Representable f, Finite (Key f), Ord (Key f), Finite a) => Finite (Rep f a) 
(Finite a, Finite b, Finite c) => Finite (a, b, c) 
(Representable f, Finite s, Ord s, Finite (Key f), Ord (Key f), Finite a) => Finite (TracedT s f a) 
(Finite e, Ord e, Finite (m a)) => Finite (ReaderT e m a) 
Finite (f (g a)) => Finite (Compose f g a) 
(Finite (f a), Finite (g a)) => Finite (Product f g a) 
(Finite a, Finite b, Finite c, Finite d) => Finite (a, b, c, d) 
(Finite a, Finite b, Finite c, Finite d, Finite e) => Finite (a, b, c, d, e)