emgm-0.4: Extensible and Modular Generics for the Masses

Portabilitynon-portable
Stabilityexperimental
Maintainergenerics@haskell.org

Generics.EMGM.Functions.Enum

Description

Summary: Generic function that enumerates the values of a datatype.

enum generates a list of the values of a datatypes. It will produce all values of all supported datatypes (with only a few exceptions [1]). For datatypes that have an infinite enumeration (e.g. Integer and [a]), enum produces an infinite list.

A number of the techniques used to write enum came from a talk by Mark Jones at the 2008 Advanced Functional Programming Summer School. The authors gratefully acknowledge his contribution.

1
The exceptions are Float and Double. These are treated in the same way as their Enum instances are treated. The result looks like this: [0.0,-1.0,1.0,-2.0,..], thus skipping all non-integral values. Note that these may overflow, because they are unbounded.

Synopsis

Documentation

newtype Enum a Source

The type of a generic function that takes no arguments and returns a list of some type.

Constructors

Enum 

Fields

selEnum :: [a]
 

Instances

enum :: Rep Enum a => [a]Source

Enumerate the values of a datatype. If the number of values is infinite, the result will be an infinite list. The remaining functions are derived from enum.

enumN :: (Integral n, Rep Enum a) => n -> [a]Source

Enumerate the first n values of a datatype. This is a shortcut for genericTake n (enum).

empty :: Rep Enum a => aSource

Returns the first element of the enumeration from enum. This is often called the neutral or empty value.