h,)$      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~'(c) The University of Glasgow 2001-2009 BSD-style (see the file LICENSE)libraries@haskell.orgstableportableSafe0>$deepseq2A class of bifunctors that can be fully evaluated.In `deepseq-1.5.0.0` this class was updated to include superclasses. should reduce its argument to normal form (that is, fully evaluate all sub-components), given functions to reduce a and b) arguments respectively, and then return ().Note: Unlike for the unary :, there is currently no support for generically deriving .deepseq0A class of functors that can be fully evaluated.In `deepseq-1.5.0.0` this class was updated to include superclasses. should reduce its argument to normal form (that is, fully evaluate all sub-components), given an argument to reduce a arguments, and then return ().See  for the generic deriving.deepseq-A class of types that can be fully evaluated. should reduce its argument to normal form (that is, fully evaluate all sub-components), and then return ().  derivingStarting with GHC 7.2, you can automatically derive instances for types possessing a  instance.Note: * can be auto-derived starting with GHC 7.4 {-# LANGUAGE DeriveGeneric #-} import GHC.Generics (Generic, Generic1) import Control.DeepSeq data Foo a = Foo a String deriving (Eq, Generic, Generic1) instance NFData a => NFData (Foo a) instance NFData1 Foo data Colour = Red | Green | Blue deriving Generic instance NFData ColourStarting with GHC 7.10, the example above can be written more concisely by enabling the new DeriveAnyClass extension: {-# LANGUAGE DeriveGeneric, DeriveAnyClass #-} import GHC.Generics (Generic) import Control.DeepSeq data Foo a = Foo a String deriving (Eq, Generic, Generic1, NFData, NFData1) data Colour = Red | Green | Blue deriving (Generic, NFData) Compatibility with previous deepseq versions SomeResult someFun (force -> !arg) = {- 'arg' will be fully evaluated -})Another useful application is to combine  with 6 in order to force deep evaluation relative to other  operations: import Control.Exception (evaluate) import Control.DeepSeq main = do result <- evaluate $ force $ pureComputation {- 'result' will be fully evaluated at this point -} return ()1Finally, here's an exception safe variant of the  readFile' example: readFile' :: FilePath -> IO String readFile' fn = bracket (openFile fn ReadMode) hClose $ \h -> evaluate . force =<< hGetContents h deepseqDeeply strict version of . deepseqReduce to weak head normal formEquivalent to \x ->  x ().Useful for defining # for types for which NF=WHNF holds. 9data T = C1 | C2 | C3 instance NFData T where rnf = rwhnf deepseqLift the standard ' function through the type constructor. deepseqLift the standard ' function through the type constructor.deepseqdeepseqdeepseq deepseq!deepseq"deepseq#deepseq$deepseq%deepseq&deepseq'deepseq(deepseq)deepseq*deepseq+deepseq,deepseq-deepseq.deepseq/deepseq0deepseq1deepseq2deepseq3deepseq4deepseq5deepseq6deepseq7deepseq8deepseq9deepseq:deepseq;deepseq<deepseq=deepseq>deepseq?deepseq@deepseqAdeepseqBdeepseqCdeepseqDdeepseqEdeepseqFdeepseqGdeepseqHdeepseqIdeepseqJdeepseqNOTE<: Only strict in the reference and not the referenced value.KdeepseqNOTE<: Only strict in the reference and not the referenced value.LdeepseqNOTE<: Only strict in the reference and not the referenced value.MdeepseqNdeepseqOdeepseqNOTE : Prior to deepseq-1.4.4.0$ this instance was only defined for  base-4.8.0.0 and later.PdeepseqNOTE : Prior to deepseq-1.4.4.0$ this instance was only defined for  base-4.8.0.0 and later.QdeepseqRdeepseqSdeepseqTdeepseqUdeepseqVdeepseqWdeepseqXdeepseqYdeepseqZdeepseq[deepseq]deepseq^deepseq`deepseqedeepseq Note: in deepseq-1.5.0.0+ this instance's superclasses were changed.fdeepseq Note: in deepseq-1.5.0.0+ this instance's superclasses were changed.gdeepseq Note: in deepseq-1.5.0.0+ this instance's superclasses were changed.hdeepseq6This instance is for convenience and consistency with =. This assumes that WHNF is equivalent to NF for functions.ideepseqjdeepseqkdeepseq Defined as  = .ldeepseqmdeepseqndeepseqodeepseqpdeepseqdeepseqdeepseqdeepseqdeepseqdeepseqdeepseqdeepseqdeepseqdeepseqdeepseqdeepseqdeepseqdeepseqdeepseqdeepseqdeepseqdeepseqdeepseqdeepseqdeepseqdeepseqdeepseqdeepseqdeepseqdeepseqdeepseqdeepseqdeepseq Available on  base >=4.9deepseqdeepseqdeepseqdeepseqdeepseqdeepseqdeepseqdeepseqdeepseqdeepseqdeepseqdeepseqdeepseqdeepseqdeepseqdeepseqdeepseqdeepseqdeepseqdeepseqdeepseqdeepseqdeepseqdeepseqdeepseqdeepseqdeepseqdeepseqdeepseqdeepseq              !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~deepseq-1.5.0.0-a9b7Control.DeepSeqControl.ExceptionevaluateControl.Applicative<$> $dmliftRnf$dmrnf04NFData2liftRnf2NFData1liftRnfNFDatarnfdeepseq$!!force<$!!>rwhnfrnf1rnf2$fGNFDataOnePar1$fGNFDataarity:+:$fGNFDataarity:*:$fGNFDataarityURec$fGNFDataarityM1$fGNFDataarityU1$fGNFDataarityV1$fNFDataMutableByteArray$fNFDataByteArray$fNFDataTuple9$fNFDataTuple8$fNFDataTuple7$fNFDataTuple6$fNFDataTuple5$fNFDataTuple4$fNFDataTuple3$fNFDataTuple2 $fNFDataSolo$fNFDataCallStack$fNFDataSrcLoc$fNFDataWrappedMonoid $fNFDataLast $fNFDataFirst $fNFDataArg $fNFDataMax $fNFDataMin$fNFDataNonEmpty$fNFDataExitCode $fNFDataCBool$fNFDataCJmpBuf $fNFDataCFpos $fNFDataCFile$fNFDataCDouble$fNFDataCFloat$fNFDataCSUSeconds$fNFDataCUSeconds $fNFDataCTime$fNFDataCClock$fNFDataCUIntMax$fNFDataCIntMax$fNFDataCUIntPtr$fNFDataCIntPtr$fNFDataCULLong$fNFDataCLLong$fNFDataCSigAtomic$fNFDataCWchar $fNFDataCSize$fNFDataCPtrdiff$fNFDataCULong $fNFDataCLong $fNFDataCUInt $fNFDataCInt$fNFDataCUShort$fNFDataCShort$fNFDataCUChar$fNFDataCSChar $fNFDataCChar$fNFDataFunPtr $fNFDataPtr$fNFDataFingerprint $fNFDataMVar $fNFDataSTRef $fNFDataIORef$fNFDataModule$fNFDataTypeRep $fNFDataTyCon$fNFDataSomeTypeRep$fNFDataUnique$fNFDataThreadId$fNFDataStableName$fNFDataProduct $fNFDataSum $fNFDataAll $fNFDataAny $fNFDataLast0$fNFDataFirst0 $fNFDataDual $fNFDataDown $fNFDataArray $fNFDataConst$fNFDataZipList $fNFDataList$fNFDataVersion$fNFDataEither $fNFDataMaybe$fNFDataComplex $fNFDataRatio$fNFDataProduct0 $fNFDataSum0$fNFDataCompose $fNFDataFUN $fNFDataFixed$fNFDataNatural $fNFDataVoid$fNFDataIdentity $fNFData:~~: $fNFData:~: $fNFDataProxy$fNFDataMaskingState$fNFDataWord64$fNFDataWord32$fNFDataWord16 $fNFDataWord8 $fNFDataInt64 $fNFDataInt32 $fNFDataInt16 $fNFDataInt8 $fNFDataUnit$fNFDataOrdering $fNFDataBool $fNFDataChar$fNFDataDouble $fNFDataFloat$fNFDataInteger $fNFDataWord $fNFDataInt$fGNFDataarityK1 $fNFData1Solo$fNFData1WrappedMonoid $fNFData1Last$fNFData1First $fNFData1Max $fNFData1Min$fNFData1NonEmpty$fNFData1FunPtr $fNFData1Ptr $fNFData1MVar$fNFData1STRef$fNFData1IORef$fNFData1StableName$fNFData1Product $fNFData1Sum$fNFData1Last0$fNFData1First0 $fNFData1Dual $fNFData1Down$fNFData1Array$fNFData1Const$fNFData1ZipList $fNFData1List$fNFData1Maybe$fNFData1Product0 $fNFData1Sum0$fNFData1Compose$fNFData1Ratio$fNFData1Fixed$fNFData1Identity $fNFData1:~~: $fNFData1:~:$fNFData1Proxy$fGNFDataOne:.:$fGNFDataOneRec1$fNFData2Tuple9$fNFData1Tuple9$fNFData2Tuple8$fNFData1Tuple8$fNFData2Tuple7$fNFData1Tuple7$fNFData2Tuple6$fNFData1Tuple6$fNFData2Tuple5$fNFData1Tuple5$fNFData2Tuple4$fNFData1Tuple4$fNFData2Tuple3$fNFData1Tuple3$fNFData2Tuple2$fNFData1Tuple2 $fNFData2Arg $fNFData1Arg$fNFData2STRef$fNFData2Array$fNFData2Const$fNFData2Either$fNFData1Either $fNFData2:~~: $fNFData2:~: ghc-internalGHC.Internal.GenericsGenericGeneric1ghc-primGHC.PrimseqGNFDataGHC.Internal.Base$! GHC.TypesIOabsurd