úÎã2GHCstable$Herbert Valerio Riedel <hvr@gnu.org> Safe-InferredHidden internal type-class  GHC.Generics-based  implementation This provides a generic " implementation for one type at a  time. If the type of the value  is asked to reduce to @ NF contains values of other types, those types have to provide  : instances. This also means that recursive types can only  be used with  if a  instance has been defined  as well (see examples below). The typical usage for " is for reducing boilerplate code  when defining " instances for ordinary algebraic ? datatypes. See the code below for some simple usage examples:   {-# LANGUAGE DeriveGeneric #-}   import Control.DeepSeq . import Control.DeepSeq.Generics (genericRnf)  import GHC.Generics   -- simple record ' data Foo = Foo AccountId Name Address  deriving Generic   type Address = [String]  type Name = String # newtype AccountId = AccountId Int   instance NFData AccountId , instance NFData Foo where rnf = genericRnf   -- recursive list-like type # data N = Z | S N deriving Generic  * instance NFData N where rnf = genericRnf   -- parametric & recursive type + data Bar a = Bar0 | Bar1 a | Bar2 (Bar a)  deriving Generic  < instance NFData a => NFData (Bar a) where rnf = genericRnf  Note: The 0 type-class showing up in the type-signature is > used internally and not exported on purpose currently.        deepseq-generics-0.1.0.0Control.DeepSeq.Genericsdeepseq-1.3.0.1Control.DeepSeqforce$!!deepseqrnfNFData genericRnfGNFDatagrnf_ $fGNFData:+: $fGNFData:*: $fGNFDataM1 $fGNFDataK1 $fGNFDataU1