generic-deepseq

Generic deep evaluation of data structures

Latest on Hackage:2.0.1.1@rev:1

This package is not currently in any snapshots. If you're interested in using it, we recommend adding it to Stackage Nightly. Doing so will make builds more reliable, and allow stackage.org to host generated Haddocks.

BSD-3-Clause licensed by Maxime Henrion
Maintained by Maxime Henrion

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.