Generic deep evaluation of data structures.
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 ofdeepseq
.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.