HORIZON HASKELLDocslts/ghc-9.10.x248f8f02026-10-05Search names, modules, packages, or :: a typeCtrl K

GHC 9.10.3 · lts/ghc-9.10.x · 248f8f0 · 2026-10-05

Moduleuniverse-base-1.1.4Haskell2010

Data.Universe.Class

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

  • 2 classes
classclass Universe a where
#

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.

Well-behaved instance should produce elements lazily.

Laws:

elem x universe                    -- any inhabitant has a finite index
let pfx = take n universe          -- any finite prefix of universe has unique elements
in length pfx = length (nub pfx)

Methods

Instances50Universe, …
classclass Universe a => Finite a where
#

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.

Laws:

elem x universeF                       -- any inhabitant has a finite index
length (filter (== x) universeF) == 1  -- should terminate
(xs -> cardinality xs == genericLength xs) universeF

Note: elemIndex x universe == elemIndex x universeF may not hold for all types, though the laws imply that universe is a permutation of universeF.

Example1 expression
elemIndex (Left True :: Either Bool Bool) universeJust 2
Example1 expression
elemIndex (Left True :: Either Bool Bool) universeFJust 1
Instances45Finite, …
  • Finite VoidDefined in universe-base-1.1.4 · Data.Universe.Class
  • Finite AllDefined in universe-base-1.1.4 · Data.Universe.Class
  • Finite AnyDefined in universe-base-1.1.4 · Data.Universe.Class
  • Finite Int16Defined in universe-base-1.1.4 · Data.Universe.Class
  • Finite Int32Defined in universe-base-1.1.4 · Data.Universe.Class
  • Finite Int64Defined in universe-base-1.1.4 · Data.Universe.Class
  • Finite Int8Defined in universe-base-1.1.4 · Data.Universe.Class
  • Finite Word16Defined in universe-base-1.1.4 · Data.Universe.Class
  • Finite Word32Defined in universe-base-1.1.4 · Data.Universe.Class
  • Finite Word64Defined in universe-base-1.1.4 · Data.Universe.Class
  • Finite Word8Defined in universe-base-1.1.4 · Data.Universe.Class
  • Finite BoolDefined in universe-base-1.1.4 · Data.Universe.Class
  • Finite CharDefined in universe-base-1.1.4 · Data.Universe.Class
  • Finite IntDefined in universe-base-1.1.4 · Data.Universe.Class
  • Finite OrderingDefined in universe-base-1.1.4 · Data.Universe.Class
  • Finite WordDefined in universe-base-1.1.4 · Data.Universe.Class
  • Finite ()Defined in universe-base-1.1.4 · Data.Universe.Class
  • Finite a => Finite (First a)Defined in universe-base-1.1.4 · Data.Universe.Class
  • Finite a => Finite (Last a)Defined in universe-base-1.1.4 · Data.Universe.Class
  • Finite a => Finite (Max a)Defined in universe-base-1.1.4 · Data.Universe.Class
  • Finite a => Finite (Min a)Defined in universe-base-1.1.4 · Data.Universe.Class
  • Finite a => Finite (Identity a)Defined in universe-base-1.1.4 · Data.Universe.Class
  • Finite a => Finite (First a)Defined in universe-base-1.1.4 · Data.Universe.Class
  • Finite a => Finite (Last a)Defined in universe-base-1.1.4 · Data.Universe.Class
  • Finite a => Finite (Dual a)Defined in universe-base-1.1.4 · Data.Universe.Class
  • Finite a => Finite (Product a)Defined in universe-base-1.1.4 · Data.Universe.Class
  • Finite a => Finite (Sum a)Defined in universe-base-1.1.4 · Data.Universe.Class
  • Finite a => Finite (Maybe a)Defined in universe-base-1.1.4 · Data.Universe.Class
  • Finite a => Finite (a)Defined in universe-base-1.1.4 · Data.Universe.Class
  • (Ord a, Finite a) => Finite (Set a)Defined in universe-base-1.1.4 · Data.Universe.Class
  • Finite (Proxy a)Defined in universe-base-1.1.4 · Data.Universe.Class
  • (Ord a, Finite a, Finite b) => Finite (a -> b)Defined in universe-base-1.1.4 · Data.Universe.Class
    Example1 expression
    mapM_ print (universeF :: [Bool -> Bool])[(False,False),(True,False)][(False,False),(True,True)][(False,True),(True,False)][(False,True),(True,True)]
    Example1 expression
    cardinality :: Tagged (Bool -> Ordering) NaturalTagged 9
    Example1 expression
    cardinality :: Tagged (Ordering -> Bool) NaturalTagged 8
  • (Ord k, Finite k, Finite v) => Finite (Map k v)Defined in universe-base-1.1.4 · Data.Universe.Class
  • (Finite a, Finite b) => Finite (Either a b)Defined in universe-base-1.1.4 · Data.Universe.Class
  • (Finite a, Finite b) => Finite (a, b)Defined in universe-base-1.1.4 · Data.Universe.Class
  • Finite (f a) => Finite (IdentityT f a)Defined in universe-base-1.1.4 · Data.Universe.Class
  • Finite a => Finite (Const a b)Defined in universe-base-1.1.4 · Data.Universe.Class
  • Finite a => Finite (Tagged b a)Defined in universe-base-1.1.4 · Data.Universe.Class
  • (Finite a, Finite b, Finite c) => Finite (a, b, c)Defined in universe-base-1.1.4 · Data.Universe.Class
  • (Finite e, Ord e, Finite (m a)) => Finite (ReaderT e m a)Defined in universe-base-1.1.4 · Data.Universe.Class
  • (Finite (f a), Finite (g a)) => Finite (Product f g a)Defined in universe-base-1.1.4 · Data.Universe.Class
  • (Finite (f a), Finite (g a)) => Finite (Sum f g a)Defined in universe-base-1.1.4 · Data.Universe.Class
  • (Finite a, Finite b, Finite c, Finite d) => Finite (a, b, c, d)Defined in universe-base-1.1.4 · Data.Universe.Class
  • Finite (f (g a)) => Finite (Compose f g a)Defined in universe-base-1.1.4 · Data.Universe.Class
  • (Finite a, Finite b, Finite c, Finite d, Finite e) => Finite (a, b, c, d, e)Defined in universe-base-1.1.4 · Data.Universe.Class