úÎZportablestablelibraries@haskell.org.A class of types that can be fully evaluated. >rnf should reduce its argument to normal form (that is, fully / evaluate all sub-components), and then return '()'. The default implementation of  is   rnf a = a `seq` () Dwhich may be convenient when defining instances for data types with , no unevaluated fields (e.g. enumerations). ;: fully evaluates the first argument, before returning the  second.  The name + is used to illustrate the relationship to :  where 8 is shallow in the sense that it only evaluates the top  level of its argument, % traverses the entire data structure  evaluating it completely. / 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 9 any order or in parallel. To impose an actual order on  evaluation, use pseq from Control.Parallel in the  parallel package. deepseq-1.1.0.2Control.DeepSeqNFDatarnfdeepseqghc-primGHC.Primseq