# generic-deepseq: Generic deep evaluation of data structures

[ bsd3, control, generics, library ] [ Propose Tags ]

This package provides a deepseq function analogous to seq, except that it traverses the entire data structure, evaluating it fully, and not just up to head normal form.

Using lists as an example:

> [1,2,undefined] seq 3
3

Whereas with deepseq:

> [1,2,undefined] deepseq 3
*** Exception: Prelude.undefined

Unlike the deepseq package, this implementation is based on the GHC.Generics framework as found in GHC >= 7.2, so that it can generate instances automatically for any datatype that has a Generic instance, without further code.

data MyType = MyType String Int (Maybe Double)
deriving Generic
instance DeepSeq MyType

Changes in version 2.0.0.0:

• Vastly improved performance. As a consequence of these changes, the member function of the DeepSeq class is now rnf, instead of deepseq.

• New instances for functions, Ratio and Complex types.

Changes in version 2.0.1.0:

• Fix the U1 and V1 instances.

Changes in version 2.0.1.1:

• No functional changes, updated to correct the URLs of the repository and the issue tracker.

[Index]