úÎybnąž      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ĄąŁ€„Чš©Ș«Ź­źŻ°±ČłŽ”¶·'(c) The University of Glasgow 2001-2009 BSD-style (see the file LICENSE)libraries@haskell.orgstableportableSafe&',7;<=>?FSTcmŒ‘2A class of bifunctors that can be fully evaluated.u 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 .0A class of functors that can be fully evaluated.v 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.-A class of types that can be fully evaluated.o should reduce its argument to normal form (that is, fully evaluate all sub-components), and then return '()'.ž  derivingVStarting 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 Colour]Starting 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<Prior to version 1.4.0.0, the default implementation of the  method was defined as  a = ș a ()However, starting with deepseq-1.4.0.0*, the default implementation is based on DefaultSignatures* allowing for more accurate auto-derived ; instances. If you need the previously used exact default & method implementation semantics, use -instance NFData Colour where rnf x = seq x ()or alternatively (instance NFData Colour where rnf = rwhnfor F{-# LANGUAGE BangPatterns #-} instance NFData Colour where rnf !_ = ()»Hidden internal type-classC: fully evaluates the first argument, before returning the second. The name + is used to illustrate the relationship to ș : where șP 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 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` xforce x fully evaluates x#, and then returns it. Note that force x, only performs evaluation when the value of force xW itself is demanded, so essentially it turns shallow evaluation into deep evaluation.. can be conveniently used in combination with  ViewPatterns: Š{-# LANGUAGE BangPatterns, ViewPatterns #-} import Control.DeepSeq someFun :: ComplexData -> 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 Deeply strict version of Ÿ. Reduce 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 Lift the standard ' function through the type constructor. Lift the standard ' function through the type constructor. !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFNOTE<: Only strict in the reference and not the referenced value.GNOTE<: Only strict in the reference and not the referenced value.HNOTE<: Only strict in the reference and not the referenced value.INOTE: Only defined for  base-4.8.0.0 and laterJNOTE: Only defined for  base-4.8.0.0 and laterKLMNOPQRSTUWXZ_6This instance is for convenience and consistency with ș<. This assumes that WHNF is equivalent to NF for functions.`ab Defined as  = ż.cdefyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–— Available on  base >=4.9˜™š›œŸ ĄąŁ€„Чš©Ș«Ź­źŻ°±ČłŽ”¶·     ÀÁ»Ă0 4Safen›Ä      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ĄąŁ€„Чš©Ș«Ź­źŻ°±ČłŽ”¶·žčș»ŒœŸżœŸÀÁÂĂÄœĆÆÁÇÈœÉÊœËÌÍÎÏĐŃ%deepseq-1.4.3.0-7dB6lQJMTgB4fhVXOIHJyControl.DeepSeqControl.ExceptionevaluateControl.DeepSeq.BackDoorNFData2liftRnf2NFData1liftRnfNFDatarnfdeepseq$!!force<$!!>rwhnfrnf1rnf2$fGNFDataOnePar1$fGNFDataarity:+:$fGNFDataarity:*:$fGNFDataarityM1$fGNFDataarityU1$fGNFDataarityV1$fNFData(,,,,,,,,)$fNFData(,,,,,,,)$fNFData(,,,,,,)$fNFData(,,,,,)$fNFData(,,,,) $fNFData(,,,) $fNFData(,,) $fNFData(,)$fNFDataCallStack$fNFDataSrcLoc$fNFDataOption$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 $fNFDataTyCon$fNFDataSomeTypeRep$fNFDataUnique$fNFDataThreadId$fNFDataStableName$fNFDataProduct $fNFDataSum $fNFDataAll $fNFDataAny $fNFDataLast0$fNFDataFirst0 $fNFDataDual $fNFDataDown $fNFDataArray $fNFDataConst$fNFDataZipList $fNFData[]$fNFDataVersion$fNFDataEither $fNFDataMaybe$fNFDataComplex $fNFDataRatio $fNFData(->) $fNFDataFixed$fNFDataNatural $fNFDataVoid$fNFDataIdentity $fNFData:~~: $fNFData:~: $fNFDataProxy$fNFDataWord64$fNFDataWord32$fNFDataWord16 $fNFDataWord8 $fNFDataInt64 $fNFDataInt32 $fNFDataInt16 $fNFDataInt8 $fNFData()$fNFDataOrdering $fNFDataBool $fNFDataChar$fNFDataDouble $fNFDataFloat$fNFDataInteger $fNFDataWord $fNFDataInt$fGNFDataarityK1$fNFData1Option$fNFData1WrappedMonoid $fNFData1Last$fNFData1First $fNFData1Max $fNFData1Min$fNFData1NonEmpty$fNFData1FunPtr $fNFData1Ptr $fNFData1MVar$fNFData1STRef$fNFData1IORef$fNFData1StableName$fNFData1Product $fNFData1Sum$fNFData1Last0$fNFData1First0 $fNFData1Dual $fNFData1Down$fNFData1Array$fNFData1Const$fNFData1ZipList $fNFData1[]$fNFData1Maybe$fNFDataProduct0$fNFData1Product0 $fNFDataSum0 $fNFData1Sum0$fNFDataCompose$fNFData1Compose$fNFData1Ratio$fNFData1Fixed$fNFData1Identity $fNFData1:~~: $fNFData1:~:$fNFData1Proxy$fGNFDataOne:.:$fGNFDataOneRec1$fNFData2(,,,,,,,,)$fNFData1(,,,,,,,,)$fNFData2(,,,,,,,)$fNFData1(,,,,,,,)$fNFData2(,,,,,,)$fNFData1(,,,,,,)$fNFData2(,,,,,)$fNFData1(,,,,,)$fNFData2(,,,,)$fNFData1(,,,,)$fNFData2(,,,)$fNFData1(,,,) $fNFData2(,,) $fNFData1(,,) $fNFData2(,) $fNFData1(,) $fNFData2Arg $fNFData1Arg$fNFData2STRef$fNFData2Array$fNFData2Const$fNFData2Either$fNFData1Either $fNFData2:~~: $fNFData2:~:base GHC.GenericsGenericGeneric1ghc-primGHC.PrimseqGNFDataGHC.Base$! GHC.TypesIO Data.Functor<$> Data.VoidabsurdRnfArgsRnfArgs0RnfArgs1grnf