Safe Haskell | Safe-Inferred |
---|

# Documentation

class 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.

universe :: [a]

class 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.

universeF :: [a]

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 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) | |

(Finite a, Finite b, Finite c) => Finite (a, b, c) | |

(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) |