The generic-deepseq package
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 220.127.116.11:
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 18.104.22.168:
Fix the U1 and V1 instances.
|Versions||22.214.171.124, 126.96.36.199, 188.8.131.52, 184.108.40.206|
|Dependencies||base (>=4.4 && <5), ghc-prim (>=0.2) [details]|
|Copyright||2012, Maxime Henrion|
|Maintainer||Maxime Henrion <email@example.com>|
|Source repository||head: hg clone http://bitbucket.org/mumux/generic-deepseq/|
|Uploaded||Sat Feb 25 11:00:47 UTC 2012 by MaximeHenrion|
|Updated||Sat May 9 12:17:29 UTC 2015 by AdamBergmark to revision 1|
|Downloads||861 total (14 in the last 30 days)|
|Status||Docs uploaded by user
Build status unknown [no reports yet]
For package maintainers and hackage trustees