úÎÈportablestablelibraries@haskell.org>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 its argument. The name  is used to  illustrate the relationship to : where  is shallow in A the sense that it only evaluates the top level of its argument,  3 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.1Control.DeepSeqNFDatarnfdeepseqghc-primGHC.Primseq