Description
Defines a class for finite and recursively enumerable Haskell types. It lets code describe which values belong to a type and enumerate them when that is possible or meaningful.
It is useful for exhaustive testing, search, examples, generators, and type-level experiments. Developers should be careful with very large or infinite enumerations, because exploring them naively can be expensive or never finish.