úÎ5%portablestablelibraries@haskell.orgSafe.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. the deep analogue of . In the expression f $!! x, x is % fully evaluated before the function f is applied to it.  a variant of ' that is useful in some circumstances:   force x = x `deepseq` x force x fully evaluates x", and then returns it. Note that  force x, only performs evaluation when the value of force x E itself is demanded, so essentially it turns shallow evaluation into  deep evaluation. 6This instance is for convenience and consistency with . ; This assumes that WHNF is equivalent to NF for functions. &  !"#$%&'%  !"#$%&'(   !"#$%&'()*+,-.deepseq-1.3.0.0Control.DeepSeqNFDatarnfdeepseq$!!forceghc-primGHC.PrimseqbasePrelude$! $fNFData(->)$fNFData(,,,,,,,,)$fNFData(,,,,,,,)$fNFData(,,,,,,)$fNFData(,,,,,)$fNFData(,,,,) $fNFData(,,,) $fNFData(,,) $fNFData(,) $fNFDataArray $fNFData[]$fNFDataVersion$fNFDataEither $fNFDataMaybe$fNFDataComplex $fNFDataRatio $fNFDataFixed$fNFDataWord64$fNFDataWord32$fNFDataWord16 $fNFDataWord8 $fNFDataInt64 $fNFDataInt32 $fNFDataInt16 $fNFDataInt8 $fNFData() $fNFDataBool $fNFDataChar$fNFDataDouble $fNFDataFloat$fNFDataInteger $fNFDataWord $fNFDataInt