deepseq-1.1.0.0: Fully evaluate data structuresSource codeContentsIndex
Control.DeepSeq
Portabilityportable
Stabilitystable
Maintainerlibraries@haskell.org
Description
Provides an overloaded function deepseq for fully evaluating data structures.
Synopsis
deepseq :: NFData a => a -> b -> b
class NFData a where
rnf :: a -> ()
Documentation
deepseq :: NFData a => a -> b -> bSource

Fully evaluates its argument. The name deepseq is used to illustrate the relationship to seq: where seq is shallow in the sense that it only evaluates the top level of its argument, deepseq traverses the entire data structure evaluating it completely.

deepseq can be useful for forcing pending exceptions, eradicating space leaks, or forcing lazy I/O to happen. It is also useful in conjunction with parallel Strategies (see the parallel package).

There is no guarantee about the ordering of evaluation. The implementation may evaluate the components of the structure in any order or in parallel. To impose an actual order on evaluation, use pseq from Control.Parallel in the parallel package.

class NFData a whereSource
Methods
rnf :: a -> ()Source

rnf should reduce its argument to normal form (that is, fully evaluate all sub-components), and then return '()'.

The default implementation of rnf is

 rnf a = a `seq` ()

which may be convenient when defining instances for data types with no unevaluated fields (e.g. enumerations).

Produced by Haddock version 2.6.1