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 'NFData'
typeclass (\"Normal Form Data\", data structures with no unevaluated
components) which defines strategies for fully evaluating different
data types. See module documentation in "Control.DeepSeq" for more
details.