This package provides methods for fully evaluating data structures ("deep evaluation"). Deep evaluation is often used for adding strictness to a program, e.g. in order to force pending exceptions, remove space leaks, or force lazy I/O to happen. It is also useful in parallel programs, to ensure pending work does not migrate to the wrong thread.
The primary use of this package is via the
deepseq function, a
"deep" version of
seq. It is implemented on top of an
typeclass ("Normal Form Data", data structures with no unevaluated
components) which defines strategies for fully evaluating different
If you want to automatically derive
NFData instances via the
GHC.Generics facility, there is a companion package
which builds on top of this package.