{-# LANGUAGE BangPatterns #-}{-# LANGUAGE CPP #-}{-# LANGUAGE DefaultSignatures #-}{-# LANGUAGE FlexibleContexts #-}{-# LANGUAGE FlexibleInstances #-}{-# LANGUAGE MultiParamTypeClasses #-}{-# LANGUAGE Safe #-}{-# LANGUAGE TypeFamilies #-}{-# LANGUAGE TypeOperators #-}{-# LANGUAGE PolyKinds #-}{-# LANGUAGE EmptyCase #-}
#if __GLASGOW_HASKELL__ >= 811 && __GLASGOW_HASKELL__ < 901
-- For the Option instance (https://gitlab.haskell.org/ghc/ghc/issues/15028){-# OPTIONS_GHC -Wno-deprecations #-}
#endif

#define BYTEARRAY_IN_BASE (__GLASGOW_HASKELL__ >= 903)
-- At the moment of writing GHC source tree has not yet bumped `base` version,-- so using __GLASGOW_HASKELL__ as a proxy instead of MIN_VERSION_base(4,17,0).------------------------------------------------------------------------------- |-- Module : Control.DeepSeq-- Copyright : (c) The University of Glasgow 2001-2009-- License : BSD-style (see the file LICENSE)---- Maintainer : libraries@haskell.org-- Stability : stable-- Portability : portable---- This module provides overloaded functions, such as 'deepseq' and-- 'rnf', for fully evaluating data structures (that is, evaluating to-- \"Normal Form\").---- A typical use is to prevent resource leaks in lazy IO programs, by-- forcing all characters from a file to be read. For example:---- > import System.IO-- > import Control.DeepSeq-- > import Control.Exception (evaluate)-- >-- > readFile' :: FilePath -> IO String-- > readFile' fn = do-- > h <- openFile fn ReadMode-- > s <- hGetContents h-- > evaluate (rnf s)-- > hClose h-- > return s---- __Note__: The example above should rather be written in terms of-- 'Control.Exception.bracket' to ensure releasing file-descriptors in-- a timely matter (see the description of 'force' for an example).---- 'deepseq' differs from 'seq' as it traverses data structures deeply,-- for example, 'seq' will evaluate only to the first constructor in-- the list:---- > > [1,2,undefined] `seq` 3-- > 3---- While 'deepseq' will force evaluation of all the list elements:---- > > [1,2,undefined] `deepseq` 3-- > *** Exception: Prelude.undefined---- Another common use is to ensure any exceptions hidden within lazy-- fields of a data structure do not leak outside the scope of the-- exception handler, or to force evaluation of a data structure in one-- thread, before passing to another thread (preventing work moving to-- the wrong threads).---- @since 1.1.0.0moduleControl.DeepSeq(-- * 'NFData' classNFData (rnf ),-- * Helper functionsdeepseq ,force ,($!!) ,(<$!!>) ,rwhnf ,-- * Liftings of the 'NFData' class-- ** For unary constructorsNFData1 (liftRnf ),rnf1 ,-- ** For binary constructorsNFData2 (liftRnf2 ),rnf2 ,)whereimportControl.ApplicativeimportControl.Concurrent(ThreadId,MVar)importControl.Exception(MaskingState(..))importData.IORefimportData.STRefimportData.IntimportData.WordimportData.RatioimportData.CompleximportData.ArrayimportData.FixedimportData.VersionimportData.MonoidasMonimportData.Typeable(TypeRep,TyCon)importData.Unique(Unique)importForeign.PtrimportForeign.C.TypesimportSystem.Exit(ExitCode(..))importSystem.Mem.StableName(StableName)importData.Ord(Down(Down))importData.Proxy(Proxy(Proxy))
#if MIN_VERSION_base(4,10,0)
importData.Type.Equality((:~:),(:~~:))
#else
importData.Type.Equality((:~:))
#endif
importData.Functor.Identity(Identity(..))importData.Typeable(rnfTypeRep,rnfTyCon)importData.Void(Void,absurd)importNumeric.Natural(Natural)importData.List.NonEmpty(NonEmpty(..))importData.SemigroupasSemiimportGHC.Stack.Types(CallStack(..),SrcLoc(..))importData.Functor.ComposeimportqualifiedData.Functor.SumasFunctorimportqualifiedData.Functor.ProductasFunctorimportGHC.Fingerprint.Type(Fingerprint(..))importGHC.Generics
#ifdef MIN_VERSION_ghc_prim
#if MIN_VERSION_ghc_prim(0,7,0)
importGHC.Tuple(Solo(..))
#endif
#endif

#if BYTEARRAY_IN_BASE
importData.Array.Byte(ByteArray(..),MutableByteArray(..))
#endif
-- | Hidden internal type-classclassGNFData arity f wheregrnf ::RnfArgs arity a ->f a ->()instanceGNFData arity V1wheregrnf :: RnfArgs arity a -> V1 a -> ()
grnf RnfArgs arity a
_V1 a
x =caseV1 a
x of{}dataZero dataOne datafamilyRnfArgs arity a datainstanceRnfArgs Zero a =RnfArgs0 newtypeinstanceRnfArgs One a =RnfArgs1 (a ->())instanceGNFData arity U1wheregrnf :: RnfArgs arity a -> U1 a -> ()
grnf RnfArgs arity a
_U1 a
U1=()instanceNFData a =>GNFData arity (K1i a )wheregrnf :: RnfArgs arity a -> K1 i a a -> ()
grnf RnfArgs arity a
_=a -> ()
forall a. NFData a => a -> ()
rnf (a -> ()) -> (K1 i a a -> a) -> K1 i a a -> ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.K1 i a a -> a
forall i c k (p :: k). K1 i c p -> c
unK1{-# INLINEABLEgrnf #-}instanceGNFData arity a =>GNFData arity (M1i c a )wheregrnf :: RnfArgs arity a -> M1 i c a a -> ()
grnf RnfArgs arity a
args =RnfArgs arity a -> a a -> ()
forall arity (f :: * -> *) a.
GNFData arity f =>
RnfArgs arity a -> f a -> ()
grnf RnfArgs arity a
args (a a -> ()) -> (M1 i c a a -> a a) -> M1 i c a a -> ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.M1 i c a a -> a a
forall i (c :: Meta) k (f :: k -> *) (p :: k). M1 i c f p -> f p
unM1{-# INLINEABLEgrnf #-}instanceGNFData arity (UReca )wheregrnf :: RnfArgs arity a -> URec a a -> ()
grnf RnfArgs arity a
_=URec a a -> ()
forall a. a -> ()
rwhnf -- Every URec data instance consists of a single data-- constructor containing a single strict field, so reducing-- any URec instance to WHNF suffices to reduce it to NF.{-# INLINEABLEgrnf #-}instance(GNFData arity a ,GNFData arity b )=>GNFData arity (a :*:b )wheregrnf :: RnfArgs arity a -> (:*:) a b a -> ()
grnf RnfArgs arity a
args (a a
x :*:b a
y )=RnfArgs arity a -> a a -> ()
forall arity (f :: * -> *) a.
GNFData arity f =>
RnfArgs arity a -> f a -> ()
grnf RnfArgs arity a
args a a
x () -> () -> ()
`seq`RnfArgs arity a -> b a -> ()
forall arity (f :: * -> *) a.
GNFData arity f =>
RnfArgs arity a -> f a -> ()
grnf RnfArgs arity a
args b a
y {-# INLINEABLEgrnf #-}instance(GNFData arity a ,GNFData arity b )=>GNFData arity (a :+:b )wheregrnf :: RnfArgs arity a -> (:+:) a b a -> ()
grnf RnfArgs arity a
args (L1a a
x )=RnfArgs arity a -> a a -> ()
forall arity (f :: * -> *) a.
GNFData arity f =>
RnfArgs arity a -> f a -> ()
grnf RnfArgs arity a
args a a
x grnf RnfArgs arity a
args (R1b a
x )=RnfArgs arity a -> b a -> ()
forall arity (f :: * -> *) a.
GNFData arity f =>
RnfArgs arity a -> f a -> ()
grnf RnfArgs arity a
args b a
x {-# INLINEABLEgrnf #-}instanceGNFData One Par1wheregrnf :: RnfArgs One a -> Par1 a -> ()
grnf (RnfArgs1 r )=a -> ()
r (a -> ()) -> (Par1 a -> a) -> Par1 a -> ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.Par1 a -> a
forall p. Par1 p -> p
unPar1instanceNFData1 f =>GNFData One (Rec1f )wheregrnf :: RnfArgs One a -> Rec1 f a -> ()
grnf (RnfArgs1 r )=(a -> ()) -> f a -> ()
forall (f :: * -> *) a. NFData1 f => (a -> ()) -> f a -> ()
liftRnf a -> ()
r (f a -> ()) -> (Rec1 f a -> f a) -> Rec1 f a -> ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.Rec1 f a -> f a
forall k (f :: k -> *) (p :: k). Rec1 f p -> f p
unRec1instance(NFData1 f ,GNFData One g )=>GNFData One (f :.:g )wheregrnf :: RnfArgs One a -> (:.:) f g a -> ()
grnf RnfArgs One a
args =(g a -> ()) -> f (g a) -> ()
forall (f :: * -> *) a. NFData1 f => (a -> ()) -> f a -> ()
liftRnf (RnfArgs One a -> g a -> ()
forall arity (f :: * -> *) a.
GNFData arity f =>
RnfArgs arity a -> f a -> ()
grnf RnfArgs One a
args )(f (g a) -> ()) -> ((:.:) f g a -> f (g a)) -> (:.:) f g a -> ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.(:.:) f g a -> f (g a)
forall k2 (f :: k2 -> *) k1 (g :: k1 -> k2) (p :: k1).
(:.:) f g p -> f (g p)
unComp1infixr0$!! infixr0`deepseq` -- | 'deepseq': fully evaluates the first argument, before returning the-- second.---- The name 'deepseq' is used to illustrate the relationship to 'seq':-- where 'seq' is shallow in the sense that it only evaluates the top-- level of its argument, 'deepseq' traverses the entire data structure-- evaluating it completely.---- 'deepseq' 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.---- @since 1.1.0.0deepseq ::NFData a =>a ->b ->b deepseq :: a -> b -> b
deepseq a
a b
b =a -> ()
forall a. NFData a => a -> ()
rnf a
a () -> b -> b
`seq`b
b -- | the deep analogue of '$!'. In the expression @f $!! x@, @x@ is-- fully evaluated before the function @f@ is applied to it.---- @since 1.2.0.0($!!) ::(NFData a )=>(a ->b )->a ->b a -> b
f $!! :: (a -> b) -> a -> b
$!! a
x =a
x a -> b -> b
forall a b. NFData a => a -> b -> b
`deepseq` a -> b
f a
x -- | a variant of 'deepseq' 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@-- itself is demanded, so essentially it turns shallow evaluation into-- deep evaluation.---- 'force' 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 'force' with-- 'Control.Exception.evaluate' in order to force deep evaluation-- relative to other 'IO' operations:---- > import Control.Exception (evaluate)-- > import Control.DeepSeq-- >-- > main = do-- > result <- evaluate $ force $ pureComputation-- > {- 'result' will be fully evaluated at this point -}-- > return ()---- Finally, 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---- @since 1.2.0.0force ::(NFData a )=>a ->a force :: a -> a
force a
x =a
x a -> a -> a
forall a b. NFData a => a -> b -> b
`deepseq` a
x -- | Deeply strict version of 'Control.Applicative.<$>'.---- @since 1.4.3.0(<$!!>) ::(Monadm ,NFData b )=>(a ->b )->m a ->m b 
#if MIN_VERSION_base(4,8,0)
-- Minor optimisation for AMP; this avoids the redundant indirection-- through 'return' in case GHC isn't smart enough to optimise it away-- on its owna -> b
f <$!!> :: (a -> b) -> m a -> m b
<$!!> m a
m =m a
m m a -> (a -> m b) -> m b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>=\a
x ->b -> m b
forall (f :: * -> *) a. Applicative f => a -> f a
pure(b -> m b) -> b -> m b
forall a b. NFData a => (a -> b) -> a -> b
$!! a -> b
f a
x 
#else
f<$!!>m=m>>=\x->return$!!fx
#endif
infixl4<$!!> -- | Reduce to weak head normal form---- Equivalent to @\\x -> 'seq' x ()@.---- Useful for defining 'NFData' for types for which NF=WHNF holds.---- > data T = C1 | C2 | C3-- > instance NFData T where rnf = rwhnf---- @since 1.4.3.0rwhnf ::a ->()rwhnf :: a -> ()
rwhnf =(a -> () -> ()
`seq`()){-# INLINErwhnf #-}-- Note: the 'rwhnf' is defined point-free to help aggressive inlining-- | A class of types that can be fully evaluated.---- @since 1.1.0.0classNFData a where-- | 'rnf' should reduce its argument to normal form (that is, fully-- evaluate all sub-components), and then return '()'.---- === 'Generic' 'NFData' deriving---- Starting with GHC 7.2, you can automatically derive instances-- for types possessing a 'Generic' instance.---- Note: 'Generic1' 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 'rnf'-- method was defined as---- @'rnf' a = 'seq' a ()@---- However, starting with @deepseq-1.4.0.0@, the default-- implementation is based on @DefaultSignatures@ allowing for-- more accurate auto-derived 'NFData' instances. If you need the-- previously used exact default 'rnf' method implementation-- semantics, use---- > instance NFData Colour where rnf x = seq x ()---- or alternatively---- > instance NFData Colour where rnf = rwhnf---- or---- > {-# LANGUAGE BangPatterns #-}-- > instance NFData Colour where rnf !_ = ()--rnf ::a ->()defaultrnf ::(Generica ,GNFData Zero (Repa ))=>a ->()rnf =RnfArgs Zero Any -> Rep a Any -> ()
forall arity (f :: * -> *) a.
GNFData arity f =>
RnfArgs arity a -> f a -> ()
grnf RnfArgs Zero Any
forall a. RnfArgs Zero a
RnfArgs0 (Rep a Any -> ()) -> (a -> Rep a Any) -> a -> ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.a -> Rep a Any
forall a x. Generic a => a -> Rep a x
from-- | A class of functors that can be fully evaluated.---- @since 1.4.3.0classNFData1 f where-- | 'liftRnf' 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 'rnf' for the generic deriving.liftRnf ::(a ->())->f a ->()defaultliftRnf ::(Generic1f ,GNFData One (Rep1f ))=>(a ->())->f a ->()liftRnf a -> ()
r =RnfArgs One a -> Rep1 f a -> ()
forall arity (f :: * -> *) a.
GNFData arity f =>
RnfArgs arity a -> f a -> ()
grnf ((a -> ()) -> RnfArgs One a
forall a. (a -> ()) -> RnfArgs One a
RnfArgs1 a -> ()
r )(Rep1 f a -> ()) -> (f a -> Rep1 f a) -> f a -> ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.f a -> Rep1 f a
forall k (f :: k -> *) (a :: k). Generic1 f => f a -> Rep1 f a
from1-- | Lift the standard 'rnf' function through the type constructor.---- @since 1.4.3.0rnf1 ::(NFData1 f ,NFData a )=>f a ->()rnf1 :: f a -> ()
rnf1 =(a -> ()) -> f a -> ()
forall (f :: * -> *) a. NFData1 f => (a -> ()) -> f a -> ()
liftRnf a -> ()
forall a. NFData a => a -> ()
rnf -- | A class of bifunctors that can be fully evaluated.---- @since 1.4.3.0classNFData2 p where-- | 'liftRnf2' 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 'liftRnf', there is currently no-- support for generically deriving 'liftRnf2'.liftRnf2 ::(a ->())->(b ->())->p a b ->()-- | Lift the standard 'rnf' function through the type constructor.---- @since 1.4.3.0rnf2 ::(NFData2 p ,NFData a ,NFData b )=>p a b ->()rnf2 :: p a b -> ()
rnf2 =(a -> ()) -> (b -> ()) -> p a b -> ()
forall (p :: * -> * -> *) a b.
NFData2 p =>
(a -> ()) -> (b -> ()) -> p a b -> ()
liftRnf2 a -> ()
forall a. NFData a => a -> ()
rnf b -> ()
forall a. NFData a => a -> ()
rnf instanceNFData Intwherernf :: Int -> ()
rnf =Int -> ()
forall a. a -> ()
rwhnf instanceNFData Wordwherernf :: Word -> ()
rnf =Word -> ()
forall a. a -> ()
rwhnf instanceNFData Integerwherernf :: Integer -> ()
rnf =Integer -> ()
forall a. a -> ()
rwhnf instanceNFData Floatwherernf :: Float -> ()
rnf =Float -> ()
forall a. a -> ()
rwhnf instanceNFData Doublewherernf :: Double -> ()
rnf =Double -> ()
forall a. a -> ()
rwhnf instanceNFData Charwherernf :: Char -> ()
rnf =Char -> ()
forall a. a -> ()
rwhnf instanceNFData Boolwherernf :: Bool -> ()
rnf =Bool -> ()
forall a. a -> ()
rwhnf instanceNFData Orderingwherernf :: Ordering -> ()
rnf =Ordering -> ()
forall a. a -> ()
rwhnf instanceNFData ()wherernf :: () -> ()
rnf =() -> ()
forall a. a -> ()
rwhnf instanceNFData Int8wherernf :: Int8 -> ()
rnf =Int8 -> ()
forall a. a -> ()
rwhnf instanceNFData Int16wherernf :: Int16 -> ()
rnf =Int16 -> ()
forall a. a -> ()
rwhnf instanceNFData Int32wherernf :: Int32 -> ()
rnf =Int32 -> ()
forall a. a -> ()
rwhnf instanceNFData Int64wherernf :: Int64 -> ()
rnf =Int64 -> ()
forall a. a -> ()
rwhnf instanceNFData Word8wherernf :: Word8 -> ()
rnf =Word8 -> ()
forall a. a -> ()
rwhnf instanceNFData Word16wherernf :: Word16 -> ()
rnf =Word16 -> ()
forall a. a -> ()
rwhnf instanceNFData Word32wherernf :: Word32 -> ()
rnf =Word32 -> ()
forall a. a -> ()
rwhnf instanceNFData Word64wherernf :: Word64 -> ()
rnf =Word64 -> ()
forall a. a -> ()
rwhnf -- | @since 1.4.4.0instanceNFData MaskingStatewherernf :: MaskingState -> ()
rnf =MaskingState -> ()
forall a. a -> ()
rwhnf -- |@since 1.4.0.0instanceNFData (Proxya )wherernf :: Proxy a -> ()
rnf Proxy a
Proxy=()-- |@since 1.4.3.0instanceNFData1 ProxywhereliftRnf :: (a -> ()) -> Proxy a -> ()
liftRnf a -> ()
_Proxy a
Proxy=()-- | @since 1.4.3.0instanceNFData (a :~:b )wherernf :: (a :~: b) -> ()
rnf =(a :~: b) -> ()
forall a. a -> ()
rwhnf -- | @since 1.4.3.0instanceNFData1 ((:~:)a )whereliftRnf :: (a -> ()) -> (a :~: a) -> ()
liftRnf a -> ()
_=(a :~: a) -> ()
forall a. a -> ()
rwhnf -- | @since 1.4.3.0instanceNFData2 (:~:)whereliftRnf2 :: (a -> ()) -> (b -> ()) -> (a :~: b) -> ()
liftRnf2 a -> ()
_b -> ()
_=(a :~: b) -> ()
forall a. a -> ()
rwhnf 
#if MIN_VERSION_base(4,10,0)
-- | @since 1.4.3.0instanceNFData (a :~~:b )wherernf :: (a :~~: b) -> ()
rnf =(a :~~: b) -> ()
forall a. a -> ()
rwhnf -- | @since 1.4.3.0instanceNFData1 ((:~~:)a )whereliftRnf :: (a -> ()) -> (a :~~: a) -> ()
liftRnf a -> ()
_=(a :~~: a) -> ()
forall a. a -> ()
rwhnf -- | @since 1.4.3.0instanceNFData2 (:~~:)whereliftRnf2 :: (a -> ()) -> (b -> ()) -> (a :~~: b) -> ()
liftRnf2 a -> ()
_b -> ()
_=(a :~~: b) -> ()
forall a. a -> ()
rwhnf 
#endif
-- |@since 1.4.0.0instanceNFData a =>NFData (Identitya )wherernf :: Identity a -> ()
rnf =Identity a -> ()
forall (f :: * -> *) a. (NFData1 f, NFData a) => f a -> ()
rnf1 -- |@since 1.4.3.0instanceNFData1 IdentitywhereliftRnf :: (a -> ()) -> Identity a -> ()
liftRnf a -> ()
r =a -> ()
r (a -> ()) -> (Identity a -> a) -> Identity a -> ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.Identity a -> a
forall a. Identity a -> a
runIdentity-- | Defined as @'rnf' = 'absurd'@.---- @since 1.4.0.0instanceNFData Voidwherernf :: Void -> ()
rnf =Void -> ()
forall a. Void -> a
absurd-- |@since 1.4.0.0instanceNFData Naturalwherernf :: Natural -> ()
rnf =Natural -> ()
forall a. a -> ()
rwhnf -- |@since 1.3.0.0instanceNFData (Fixeda )wherernf :: Fixed a -> ()
rnf =Fixed a -> ()
forall a. a -> ()
rwhnf -- |@since 1.4.3.0instanceNFData1 FixedwhereliftRnf :: (a -> ()) -> Fixed a -> ()
liftRnf a -> ()
_=Fixed a -> ()
forall a. a -> ()
rwhnf -- |This instance is for convenience and consistency with 'seq'.-- This assumes that WHNF is equivalent to NF for functions.---- @since 1.3.0.0instanceNFData (a ->b )wherernf :: (a -> b) -> ()
rnf =(a -> b) -> ()
forall a. a -> ()
rwhnf --Rational and complex numbers.-- | Available on @base >=4.9@---- @since 1.4.3.0instanceNFData1 RatiowhereliftRnf :: (a -> ()) -> Ratio a -> ()
liftRnf a -> ()
r Ratio a
x =a -> ()
r (Ratio a -> a
forall a. Ratio a -> a
numeratorRatio a
x )() -> () -> ()
`seq`a -> ()
r (Ratio a -> a
forall a. Ratio a -> a
denominatorRatio a
x )-- | @since 1.4.3.0instance(NFData1 f ,NFData1 g )=>NFData1 (Composef g )whereliftRnf :: (a -> ()) -> Compose f g a -> ()
liftRnf a -> ()
r =(g a -> ()) -> f (g a) -> ()
forall (f :: * -> *) a. NFData1 f => (a -> ()) -> f a -> ()
liftRnf ((a -> ()) -> g a -> ()
forall (f :: * -> *) a. NFData1 f => (a -> ()) -> f a -> ()
liftRnf a -> ()
r )(f (g a) -> ())
-> (Compose f g a -> f (g a)) -> Compose f g a -> ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.Compose f g a -> f (g a)
forall k1 (f :: k1 -> *) k2 (g :: k2 -> k1) (a :: k2).
Compose f g a -> f (g a)
getCompose-- | @since 1.4.3.0instance(NFData1 f ,NFData1 g ,NFData a )=>NFData (Composef g a )wherernf :: Compose f g a -> ()
rnf =Compose f g a -> ()
forall (f :: * -> *) a. (NFData1 f, NFData a) => f a -> ()
rnf1 -- | @since 1.4.3.0instance(NFData1 f ,NFData1 g )=>NFData1 (Functor.Sumf g )whereliftRnf :: (a -> ()) -> Sum f g a -> ()
liftRnf a -> ()
rnf0 (Functor.InLf a
l )=(a -> ()) -> f a -> ()
forall (f :: * -> *) a. NFData1 f => (a -> ()) -> f a -> ()
liftRnf a -> ()
rnf0 f a
l liftRnf a -> ()
rnf0 (Functor.InRg a
r )=(a -> ()) -> g a -> ()
forall (f :: * -> *) a. NFData1 f => (a -> ()) -> f a -> ()
liftRnf a -> ()
rnf0 g a
r -- | @since 1.4.3.0instance(NFData1 f ,NFData1 g ,NFData a )=>NFData (Functor.Sumf g a )wherernf :: Sum f g a -> ()
rnf =Sum f g a -> ()
forall (f :: * -> *) a. (NFData1 f, NFData a) => f a -> ()
rnf1 -- | @since 1.4.3.0instance(NFData1 f ,NFData1 g )=>NFData1 (Functor.Productf g )whereliftRnf :: (a -> ()) -> Product f g a -> ()
liftRnf a -> ()
rnf0 (Functor.Pairf a
f g a
g )=(a -> ()) -> f a -> ()
forall (f :: * -> *) a. NFData1 f => (a -> ()) -> f a -> ()
liftRnf a -> ()
rnf0 f a
f () -> () -> ()
`seq`(a -> ()) -> g a -> ()
forall (f :: * -> *) a. NFData1 f => (a -> ()) -> f a -> ()
liftRnf a -> ()
rnf0 g a
g -- | @since 1.4.3.0instance(NFData1 f ,NFData1 g ,NFData a )=>NFData (Functor.Productf g a )wherernf :: Product f g a -> ()
rnf =Product f g a -> ()
forall (f :: * -> *) a. (NFData1 f, NFData a) => f a -> ()
rnf1 instanceNFData a =>NFData (Ratioa )wherernf :: Ratio a -> ()
rnf Ratio a
x =(a, a) -> ()
forall a. NFData a => a -> ()
rnf (Ratio a -> a
forall a. Ratio a -> a
numeratorRatio a
x ,Ratio a -> a
forall a. Ratio a -> a
denominatorRatio a
x )instance(NFData a )=>NFData (Complexa )wherernf :: Complex a -> ()
rnf (a
x :+a
y )=a -> ()
forall a. NFData a => a -> ()
rnf a
x () -> () -> ()
`seq`a -> ()
forall a. NFData a => a -> ()
rnf a
y () -> () -> ()
`seq`()instanceNFData a =>NFData (Maybea )wherernf :: Maybe a -> ()
rnf =Maybe a -> ()
forall (f :: * -> *) a. (NFData1 f, NFData a) => f a -> ()
rnf1 -- |@since 1.4.3.0instanceNFData1 MaybewhereliftRnf :: (a -> ()) -> Maybe a -> ()
liftRnf a -> ()
_r Maybe a
Nothing=()liftRnf a -> ()
r (Justa
x )=a -> ()
r a
x instance(NFData a ,NFData b )=>NFData (Eithera b )wherernf :: Either a b -> ()
rnf =Either a b -> ()
forall (f :: * -> *) a. (NFData1 f, NFData a) => f a -> ()
rnf1 -- |@since 1.4.3.0instance(NFData a )=>NFData1 (Eithera )whereliftRnf :: (a -> ()) -> Either a a -> ()
liftRnf =(a -> ()) -> (a -> ()) -> Either a a -> ()
forall (p :: * -> * -> *) a b.
NFData2 p =>
(a -> ()) -> (b -> ()) -> p a b -> ()
liftRnf2 a -> ()
forall a. NFData a => a -> ()
rnf -- |@since 1.4.3.0instanceNFData2 EitherwhereliftRnf2 :: (a -> ()) -> (b -> ()) -> Either a b -> ()
liftRnf2 a -> ()
l b -> ()
_r (Lefta
x )=a -> ()
l a
x liftRnf2 a -> ()
_l b -> ()
r (Rightb
y )=b -> ()
r b
y -- |@since 1.3.0.0instanceNFData Data.Version.Versionwherernf :: Version -> ()
rnf (Data.Version.Version[Int]
branch [String]
tags )=[Int] -> ()
forall a. NFData a => a -> ()
rnf [Int]
branch () -> () -> ()
`seq`[String] -> ()
forall a. NFData a => a -> ()
rnf [String]
tags instanceNFData a =>NFData [a ]wherernf :: [a] -> ()
rnf =[a] -> ()
forall (f :: * -> *) a. (NFData1 f, NFData a) => f a -> ()
rnf1 -- |@since 1.4.3.0instanceNFData1 []whereliftRnf :: (a -> ()) -> [a] -> ()
liftRnf a -> ()
r =[a] -> ()
go wherego :: [a] -> ()
go []=()go (a
x :[a]
xs )=a -> ()
r a
x () -> () -> ()
`seq`[a] -> ()
go [a]
xs -- |@since 1.4.0.0instanceNFData a =>NFData (ZipLista )wherernf :: ZipList a -> ()
rnf =ZipList a -> ()
forall (f :: * -> *) a. (NFData1 f, NFData a) => f a -> ()
rnf1 -- |@since 1.4.3.0instanceNFData1 ZipListwhereliftRnf :: (a -> ()) -> ZipList a -> ()
liftRnf a -> ()
r =(a -> ()) -> [a] -> ()
forall (f :: * -> *) a. NFData1 f => (a -> ()) -> f a -> ()
liftRnf a -> ()
r ([a] -> ()) -> (ZipList a -> [a]) -> ZipList a -> ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.ZipList a -> [a]
forall a. ZipList a -> [a]
getZipList-- |@since 1.4.0.0instanceNFData a =>NFData (Consta b )wherernf :: Const a b -> ()
rnf =a -> ()
forall a. NFData a => a -> ()
rnf (a -> ()) -> (Const a b -> a) -> Const a b -> ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.Const a b -> a
forall a k (b :: k). Const a b -> a
getConst-- |@since 1.4.3.0instanceNFData a =>NFData1 (Consta )whereliftRnf :: (a -> ()) -> Const a a -> ()
liftRnf a -> ()
_=a -> ()
forall a. NFData a => a -> ()
rnf (a -> ()) -> (Const a a -> a) -> Const a a -> ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.Const a a -> a
forall a k (b :: k). Const a b -> a
getConst-- |@since 1.4.3.0instanceNFData2 ConstwhereliftRnf2 :: (a -> ()) -> (b -> ()) -> Const a b -> ()
liftRnf2 a -> ()
r b -> ()
_=a -> ()
r (a -> ()) -> (Const a b -> a) -> Const a b -> ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.Const a b -> a
forall a k (b :: k). Const a b -> a
getConst-- We should use MIN_VERSION array(0,5,1,1) but that's not possible.-- There isn't an underscore to not break C preprocessorinstance(NFData a ,NFData b )=>NFData (Arraya b )wherernf :: Array a b -> ()
rnf Array a b
x =((a, a), [b]) -> ()
forall a. NFData a => a -> ()
rnf (Array a b -> (a, a)
forall i e. Array i e -> (i, i)
boundsArray a b
x ,Array a b -> [b]
forall i e. Array i e -> [e]
Data.Array.elemsArray a b
x )-- |@since 1.4.3.0instance(NFData a )=>NFData1 (Arraya )whereliftRnf :: (a -> ()) -> Array a a -> ()
liftRnf a -> ()
r Array a a
x =(a, a) -> ()
forall a. NFData a => a -> ()
rnf (Array a a -> (a, a)
forall i e. Array i e -> (i, i)
boundsArray a a
x )() -> () -> ()
`seq`(a -> ()) -> [a] -> ()
forall (f :: * -> *) a. NFData1 f => (a -> ()) -> f a -> ()
liftRnf a -> ()
r (Array a a -> [a]
forall i e. Array i e -> [e]
Data.Array.elemsArray a a
x )-- |@since 1.4.3.0instanceNFData2 ArraywhereliftRnf2 :: (a -> ()) -> (b -> ()) -> Array a b -> ()
liftRnf2 a -> ()
r b -> ()
r' Array a b
x =(a -> ()) -> (a -> ()) -> (a, a) -> ()
forall (p :: * -> * -> *) a b.
NFData2 p =>
(a -> ()) -> (b -> ()) -> p a b -> ()
liftRnf2 a -> ()
r a -> ()
r (Array a b -> (a, a)
forall i e. Array i e -> (i, i)
boundsArray a b
x )() -> () -> ()
`seq`(b -> ()) -> [b] -> ()
forall (f :: * -> *) a. NFData1 f => (a -> ()) -> f a -> ()
liftRnf b -> ()
r' (Array a b -> [b]
forall i e. Array i e -> [e]
Data.Array.elemsArray a b
x )-- |@since 1.4.0.0instanceNFData a =>NFData (Downa )wherernf :: Down a -> ()
rnf =Down a -> ()
forall (f :: * -> *) a. (NFData1 f, NFData a) => f a -> ()
rnf1 -- |@since 1.4.3.0instanceNFData1 DownwhereliftRnf :: (a -> ()) -> Down a -> ()
liftRnf a -> ()
r (Downa
x )=a -> ()
r a
x -- |@since 1.4.0.0instanceNFData a =>NFData (Duala )wherernf :: Dual a -> ()
rnf =Dual a -> ()
forall (f :: * -> *) a. (NFData1 f, NFData a) => f a -> ()
rnf1 -- |@since 1.4.3.0instanceNFData1 DualwhereliftRnf :: (a -> ()) -> Dual a -> ()
liftRnf a -> ()
r (Duala
x )=a -> ()
r a
x -- |@since 1.4.0.0instanceNFData a =>NFData (Mon.Firsta )wherernf :: First a -> ()
rnf =First a -> ()
forall (f :: * -> *) a. (NFData1 f, NFData a) => f a -> ()
rnf1 -- |@since 1.4.3.0instanceNFData1 Mon.FirstwhereliftRnf :: (a -> ()) -> First a -> ()
liftRnf a -> ()
r (Mon.FirstMaybe a
x )=(a -> ()) -> Maybe a -> ()
forall (f :: * -> *) a. NFData1 f => (a -> ()) -> f a -> ()
liftRnf a -> ()
r Maybe a
x -- |@since 1.4.0.0instanceNFData a =>NFData (Mon.Lasta )wherernf :: Last a -> ()
rnf =Last a -> ()
forall (f :: * -> *) a. (NFData1 f, NFData a) => f a -> ()
rnf1 -- |@since 1.4.3.0instanceNFData1 Mon.LastwhereliftRnf :: (a -> ()) -> Last a -> ()
liftRnf a -> ()
r (Mon.LastMaybe a
x )=(a -> ()) -> Maybe a -> ()
forall (f :: * -> *) a. NFData1 f => (a -> ()) -> f a -> ()
liftRnf a -> ()
r Maybe a
x -- |@since 1.4.0.0instanceNFData Anywherernf :: Any -> ()
rnf =Bool -> ()
forall a. NFData a => a -> ()
rnf (Bool -> ()) -> (Any -> Bool) -> Any -> ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.Any -> Bool
getAny-- |@since 1.4.0.0instanceNFData Allwherernf :: All -> ()
rnf =Bool -> ()
forall a. NFData a => a -> ()
rnf (Bool -> ()) -> (All -> Bool) -> All -> ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.All -> Bool
getAll-- |@since 1.4.0.0instanceNFData a =>NFData (Suma )wherernf :: Sum a -> ()
rnf =Sum a -> ()
forall (f :: * -> *) a. (NFData1 f, NFData a) => f a -> ()
rnf1 -- |@since 1.4.3.0instanceNFData1 SumwhereliftRnf :: (a -> ()) -> Sum a -> ()
liftRnf a -> ()
r (Suma
x )=a -> ()
r a
x -- |@since 1.4.0.0instanceNFData a =>NFData (Producta )wherernf :: Product a -> ()
rnf =Product a -> ()
forall (f :: * -> *) a. (NFData1 f, NFData a) => f a -> ()
rnf1 -- |@since 1.4.3.0instanceNFData1 ProductwhereliftRnf :: (a -> ()) -> Product a -> ()
liftRnf a -> ()
r (Producta
x )=a -> ()
r a
x -- |@since 1.4.0.0instanceNFData (StableNamea )wherernf :: StableName a -> ()
rnf =StableName a -> ()
forall a. a -> ()
rwhnf -- assumes `data StableName a = StableName (StableName# a)`-- |@since 1.4.3.0instanceNFData1 StableNamewhereliftRnf :: (a -> ()) -> StableName a -> ()
liftRnf a -> ()
_=StableName a -> ()
forall a. a -> ()
rwhnf -- |@since 1.4.0.0instanceNFData ThreadIdwherernf :: ThreadId -> ()
rnf =ThreadId -> ()
forall a. a -> ()
rwhnf -- assumes `data ThreadId = ThreadId ThreadId#`-- |@since 1.4.0.0instanceNFData Uniquewherernf :: Unique -> ()
rnf =Unique -> ()
forall a. a -> ()
rwhnf -- assumes `newtype Unique = Unique Integer`-- | __NOTE__: Prior to @deepseq-1.4.4.0@ this instance was only defined for @base-4.8.0.0@ and later.---- @since 1.4.0.0instanceNFData TypeRepwherernf :: TypeRep -> ()
rnf TypeRep
tyrep =TypeRep -> ()
rnfTypeRepTypeRep
tyrep -- | __NOTE__: Prior to @deepseq-1.4.4.0@ this instance was only defined for @base-4.8.0.0@ and later.---- @since 1.4.0.0instanceNFData TyConwherernf :: TyCon -> ()
rnf TyCon
tycon =TyCon -> ()
rnfTyConTyCon
tycon -- | __NOTE__: Only strict in the reference and not the referenced value.---- @since 1.4.2.0instanceNFData (IORefa )wherernf :: IORef a -> ()
rnf =IORef a -> ()
forall a. a -> ()
rwhnf -- |@since 1.4.3.0instanceNFData1 IORefwhereliftRnf :: (a -> ()) -> IORef a -> ()
liftRnf a -> ()
_=IORef a -> ()
forall a. a -> ()
rwhnf -- | __NOTE__: Only strict in the reference and not the referenced value.---- @since 1.4.2.0instanceNFData (STRefs a )wherernf :: STRef s a -> ()
rnf =STRef s a -> ()
forall a. a -> ()
rwhnf -- |@since 1.4.3.0instanceNFData1 (STRefs )whereliftRnf :: (a -> ()) -> STRef s a -> ()
liftRnf a -> ()
_=STRef s a -> ()
forall a. a -> ()
rwhnf -- |@since 1.4.3.0instanceNFData2 STRefwhereliftRnf2 :: (a -> ()) -> (b -> ()) -> STRef a b -> ()
liftRnf2 a -> ()
_b -> ()
_=STRef a b -> ()
forall a. a -> ()
rwhnf -- | __NOTE__: Only strict in the reference and not the referenced value.---- @since 1.4.2.0instanceNFData (MVara )wherernf :: MVar a -> ()
rnf =MVar a -> ()
forall a. a -> ()
rwhnf -- |@since 1.4.3.0instanceNFData1 MVarwhereliftRnf :: (a -> ()) -> MVar a -> ()
liftRnf a -> ()
_=MVar a -> ()
forall a. a -> ()
rwhnf ------------------------------------------------------------------------------ GHC Specifics-- |@since 1.4.0.0instanceNFData Fingerprintwherernf :: Fingerprint -> ()
rnf (FingerprintWord64
_Word64
_)=()------------------------------------------------------------------------------ Foreign.Ptr-- |@since 1.4.2.0instanceNFData (Ptra )wherernf :: Ptr a -> ()
rnf =Ptr a -> ()
forall a. a -> ()
rwhnf -- |@since 1.4.3.0instanceNFData1 PtrwhereliftRnf :: (a -> ()) -> Ptr a -> ()
liftRnf a -> ()
_=Ptr a -> ()
forall a. a -> ()
rwhnf -- |@since 1.4.2.0instanceNFData (FunPtra )wherernf :: FunPtr a -> ()
rnf =FunPtr a -> ()
forall a. a -> ()
rwhnf -- |@since 1.4.3.0instanceNFData1 FunPtrwhereliftRnf :: (a -> ()) -> FunPtr a -> ()
liftRnf a -> ()
_=FunPtr a -> ()
forall a. a -> ()
rwhnf ------------------------------------------------------------------------------ Foreign.C.Types-- |@since 1.4.0.0instanceNFData CCharwherernf :: CChar -> ()
rnf =CChar -> ()
forall a. a -> ()
rwhnf -- |@since 1.4.0.0instanceNFData CSCharwherernf :: CSChar -> ()
rnf =CSChar -> ()
forall a. a -> ()
rwhnf -- |@since 1.4.0.0instanceNFData CUCharwherernf :: CUChar -> ()
rnf =CUChar -> ()
forall a. a -> ()
rwhnf -- |@since 1.4.0.0instanceNFData CShortwherernf :: CShort -> ()
rnf =CShort -> ()
forall a. a -> ()
rwhnf -- |@since 1.4.0.0instanceNFData CUShortwherernf :: CUShort -> ()
rnf =CUShort -> ()
forall a. a -> ()
rwhnf -- |@since 1.4.0.0instanceNFData CIntwherernf :: CInt -> ()
rnf =CInt -> ()
forall a. a -> ()
rwhnf -- |@since 1.4.0.0instanceNFData CUIntwherernf :: CUInt -> ()
rnf =CUInt -> ()
forall a. a -> ()
rwhnf -- |@since 1.4.0.0instanceNFData CLongwherernf :: CLong -> ()
rnf =CLong -> ()
forall a. a -> ()
rwhnf -- |@since 1.4.0.0instanceNFData CULongwherernf :: CULong -> ()
rnf =CULong -> ()
forall a. a -> ()
rwhnf -- |@since 1.4.0.0instanceNFData CPtrdiffwherernf :: CPtrdiff -> ()
rnf =CPtrdiff -> ()
forall a. a -> ()
rwhnf -- |@since 1.4.0.0instanceNFData CSizewherernf :: CSize -> ()
rnf =CSize -> ()
forall a. a -> ()
rwhnf -- |@since 1.4.0.0instanceNFData CWcharwherernf :: CWchar -> ()
rnf =CWchar -> ()
forall a. a -> ()
rwhnf -- |@since 1.4.0.0instanceNFData CSigAtomicwherernf :: CSigAtomic -> ()
rnf =CSigAtomic -> ()
forall a. a -> ()
rwhnf -- |@since 1.4.0.0instanceNFData CLLongwherernf :: CLLong -> ()
rnf =CLLong -> ()
forall a. a -> ()
rwhnf -- |@since 1.4.0.0instanceNFData CULLongwherernf :: CULLong -> ()
rnf =CULLong -> ()
forall a. a -> ()
rwhnf -- |@since 1.4.0.0instanceNFData CIntPtrwherernf :: CIntPtr -> ()
rnf =CIntPtr -> ()
forall a. a -> ()
rwhnf -- |@since 1.4.0.0instanceNFData CUIntPtrwherernf :: CUIntPtr -> ()
rnf =CUIntPtr -> ()
forall a. a -> ()
rwhnf -- |@since 1.4.0.0instanceNFData CIntMaxwherernf :: CIntMax -> ()
rnf =CIntMax -> ()
forall a. a -> ()
rwhnf -- |@since 1.4.0.0instanceNFData CUIntMaxwherernf :: CUIntMax -> ()
rnf =CUIntMax -> ()
forall a. a -> ()
rwhnf -- |@since 1.4.0.0instanceNFData CClockwherernf :: CClock -> ()
rnf =CClock -> ()
forall a. a -> ()
rwhnf -- |@since 1.4.0.0instanceNFData CTimewherernf :: CTime -> ()
rnf =CTime -> ()
forall a. a -> ()
rwhnf -- |@since 1.4.0.0instanceNFData CUSecondswherernf :: CUSeconds -> ()
rnf =CUSeconds -> ()
forall a. a -> ()
rwhnf -- |@since 1.4.0.0instanceNFData CSUSecondswherernf :: CSUSeconds -> ()
rnf =CSUSeconds -> ()
forall a. a -> ()
rwhnf -- |@since 1.4.0.0instanceNFData CFloatwherernf :: CFloat -> ()
rnf =CFloat -> ()
forall a. a -> ()
rwhnf -- |@since 1.4.0.0instanceNFData CDoublewherernf :: CDouble -> ()
rnf =CDouble -> ()
forall a. a -> ()
rwhnf -- NOTE: The types `CFile`, `CFPos`, and `CJmpBuf` below are not-- newtype wrappers rather defined as field-less single-constructor-- types.-- |@since 1.4.0.0instanceNFData CFilewherernf :: CFile -> ()
rnf =CFile -> ()
forall a. a -> ()
rwhnf -- |@since 1.4.0.0instanceNFData CFposwherernf :: CFpos -> ()
rnf =CFpos -> ()
forall a. a -> ()
rwhnf -- |@since 1.4.0.0instanceNFData CJmpBufwherernf :: CJmpBuf -> ()
rnf =CJmpBuf -> ()
forall a. a -> ()
rwhnf 
#if MIN_VERSION_base(4,10,0)
-- | @since 1.4.3.0instanceNFData CBoolwherernf :: CBool -> ()
rnf =CBool -> ()
forall a. a -> ()
rwhnf 
#endif
------------------------------------------------------------------------------ System.Exit-- |@since 1.4.2.0instanceNFData ExitCodewherernf :: ExitCode -> ()
rnf (ExitFailureInt
n )=Int -> ()
forall a. NFData a => a -> ()
rnf Int
n rnf ExitCode
ExitSuccess=()------------------------------------------------------------------------------ instances previously provided by semigroups package-- |@since 1.4.2.0instanceNFData a =>NFData (NonEmptya )wherernf :: NonEmpty a -> ()
rnf =NonEmpty a -> ()
forall (f :: * -> *) a. (NFData1 f, NFData a) => f a -> ()
rnf1 -- |@since 1.4.3.0instanceNFData1 NonEmptywhereliftRnf :: (a -> ()) -> NonEmpty a -> ()
liftRnf a -> ()
r (a
x :|[a]
xs )=a -> ()
r a
x () -> () -> ()
`seq`(a -> ()) -> [a] -> ()
forall (f :: * -> *) a. NFData1 f => (a -> ()) -> f a -> ()
liftRnf a -> ()
r [a]
xs -- |@since 1.4.2.0instanceNFData a =>NFData (Mina )wherernf :: Min a -> ()
rnf =Min a -> ()
forall (f :: * -> *) a. (NFData1 f, NFData a) => f a -> ()
rnf1 -- |@since 1.4.3.0instanceNFData1 MinwhereliftRnf :: (a -> ()) -> Min a -> ()
liftRnf a -> ()
r (Mina
a )=a -> ()
r a
a -- |@since 1.4.2.0instanceNFData a =>NFData (Maxa )wherernf :: Max a -> ()
rnf =Max a -> ()
forall (f :: * -> *) a. (NFData1 f, NFData a) => f a -> ()
rnf1 -- |@since 1.4.3.0instanceNFData1 MaxwhereliftRnf :: (a -> ()) -> Max a -> ()
liftRnf a -> ()
r (Maxa
a )=a -> ()
r a
a -- |@since 1.4.2.0instance(NFData a ,NFData b )=>NFData (Arga b )wherernf :: Arg a b -> ()
rnf =Arg a b -> ()
forall (p :: * -> * -> *) a b.
(NFData2 p, NFData a, NFData b) =>
p a b -> ()
rnf2 -- |@since 1.4.3.0instance(NFData a )=>NFData1 (Arga )whereliftRnf :: (a -> ()) -> Arg a a -> ()
liftRnf =(a -> ()) -> (a -> ()) -> Arg a a -> ()
forall (p :: * -> * -> *) a b.
NFData2 p =>
(a -> ()) -> (b -> ()) -> p a b -> ()
liftRnf2 a -> ()
forall a. NFData a => a -> ()
rnf -- |@since 1.4.3.0instanceNFData2 ArgwhereliftRnf2 :: (a -> ()) -> (b -> ()) -> Arg a b -> ()
liftRnf2 a -> ()
r b -> ()
r' (Arga
a b
b )=a -> ()
r a
a () -> () -> ()
`seq`b -> ()
r' b
b () -> () -> ()
`seq`()-- |@since 1.4.2.0instanceNFData a =>NFData (Semi.Firsta )wherernf :: First a -> ()
rnf =First a -> ()
forall (f :: * -> *) a. (NFData1 f, NFData a) => f a -> ()
rnf1 -- |@since 1.4.3.0instanceNFData1 Semi.FirstwhereliftRnf :: (a -> ()) -> First a -> ()
liftRnf a -> ()
r (Semi.Firsta
a )=a -> ()
r a
a -- |@since 1.4.2.0instanceNFData a =>NFData (Semi.Lasta )wherernf :: Last a -> ()
rnf =Last a -> ()
forall (f :: * -> *) a. (NFData1 f, NFData a) => f a -> ()
rnf1 -- |@since 1.4.3.0instanceNFData1 Semi.LastwhereliftRnf :: (a -> ()) -> Last a -> ()
liftRnf a -> ()
r (Semi.Lasta
a )=a -> ()
r a
a -- |@since 1.4.2.0instanceNFData m =>NFData (WrappedMonoidm )wherernf :: WrappedMonoid m -> ()
rnf =WrappedMonoid m -> ()
forall (f :: * -> *) a. (NFData1 f, NFData a) => f a -> ()
rnf1 -- |@since 1.4.3.0instanceNFData1 WrappedMonoidwhereliftRnf :: (a -> ()) -> WrappedMonoid a -> ()
liftRnf a -> ()
r (WrapMonoida
a )=a -> ()
r a
a 
#if __GLASGOW_HASKELL__ < 901
-- |@since 1.4.2.0instanceNFData a =>NFData (Optiona )wherernf :: Option a -> ()
rnf =Option a -> ()
forall (f :: * -> *) a. (NFData1 f, NFData a) => f a -> ()
rnf1 -- |@since 1.4.3.0instanceNFData1 OptionwhereliftRnf :: (a -> ()) -> Option a -> ()
liftRnf a -> ()
r (OptionMaybe a
a )=(a -> ()) -> Maybe a -> ()
forall (f :: * -> *) a. NFData1 f => (a -> ()) -> f a -> ()
liftRnf a -> ()
r Maybe a
a 
#endif
------------------------------------------------------------------------------ GHC.Stack-- |@since 1.4.2.0instanceNFData SrcLocwherernf :: SrcLoc -> ()
rnf (SrcLocString
a String
b String
c Int
d Int
e Int
f Int
g )=String -> ()
forall a. NFData a => a -> ()
rnf String
a () -> () -> ()
`seq`String -> ()
forall a. NFData a => a -> ()
rnf String
b () -> () -> ()
`seq`String -> ()
forall a. NFData a => a -> ()
rnf String
c () -> () -> ()
`seq`Int -> ()
forall a. NFData a => a -> ()
rnf Int
d () -> () -> ()
`seq`Int -> ()
forall a. NFData a => a -> ()
rnf Int
e () -> () -> ()
`seq`Int -> ()
forall a. NFData a => a -> ()
rnf Int
f () -> () -> ()
`seq`Int -> ()
forall a. NFData a => a -> ()
rnf Int
g -- |@since 1.4.2.0instanceNFData CallStackwherernf :: CallStack -> ()
rnf CallStack
EmptyCallStack=()rnf (PushCallStackString
a SrcLoc
b CallStack
c )=String -> ()
forall a. NFData a => a -> ()
rnf String
a () -> () -> ()
`seq`SrcLoc -> ()
forall a. NFData a => a -> ()
rnf SrcLoc
b () -> () -> ()
`seq`CallStack -> ()
forall a. NFData a => a -> ()
rnf CallStack
c rnf (FreezeCallStackCallStack
a )=CallStack -> ()
forall a. NFData a => a -> ()
rnf CallStack
a ------------------------------------------------------------------------------ Tuples
#ifdef MIN_VERSION_ghc_prim
#if MIN_VERSION_ghc_prim(0,7,0)
-- |@since 1.4.6.0instanceNFDataa=>NFData(Soloa)wherernf(Soloa)=rnfa-- |@since 1.4.6.0instanceNFData1SolowhereliftRnfr(Soloa)=ra
#endif
#endif
instance(NFData a ,NFData b )=>NFData (a ,b )wherernf :: (a, b) -> ()
rnf =(a, b) -> ()
forall (p :: * -> * -> *) a b.
(NFData2 p, NFData a, NFData b) =>
p a b -> ()
rnf2 -- |@since 1.4.3.0instance(NFData a )=>NFData1 ((,)a )whereliftRnf :: (a -> ()) -> (a, a) -> ()
liftRnf =(a -> ()) -> (a -> ()) -> (a, a) -> ()
forall (p :: * -> * -> *) a b.
NFData2 p =>
(a -> ()) -> (b -> ()) -> p a b -> ()
liftRnf2 a -> ()
forall a. NFData a => a -> ()
rnf -- |@since 1.4.3.0instanceNFData2 (,)whereliftRnf2 :: (a -> ()) -> (b -> ()) -> (a, b) -> ()
liftRnf2 a -> ()
r b -> ()
r' (a
x ,b
y )=a -> ()
r a
x () -> () -> ()
`seq`b -> ()
r' b
y -- Code below is generated, see generate-nfdata-tuple.hsinstance(NFData a1 ,NFData a2 ,NFData a3 )=>NFData (a1 ,a2 ,a3 )wherernf :: (a1, a2, a3) -> ()
rnf =(a1, a2, a3) -> ()
forall (p :: * -> * -> *) a b.
(NFData2 p, NFData a, NFData b) =>
p a b -> ()
rnf2 -- |@since 1.4.3.0instance(NFData a1 ,NFData a2 )=>NFData1 ((,,)a1 a2 )whereliftRnf :: (a -> ()) -> (a1, a2, a) -> ()
liftRnf =(a2 -> ()) -> (a -> ()) -> (a1, a2, a) -> ()
forall (p :: * -> * -> *) a b.
NFData2 p =>
(a -> ()) -> (b -> ()) -> p a b -> ()
liftRnf2 a2 -> ()
forall a. NFData a => a -> ()
rnf -- |@since 1.4.3.0instance(NFData a1 )=>NFData2 ((,,)a1 )whereliftRnf2 :: (a -> ()) -> (b -> ()) -> (a1, a, b) -> ()
liftRnf2 a -> ()
r b -> ()
r' (a1
x1 ,a
x2 ,b
x3 )=a1 -> ()
forall a. NFData a => a -> ()
rnf a1
x1 () -> () -> ()
`seq`a -> ()
r a
x2 () -> () -> ()
`seq`b -> ()
r' b
x3 instance(NFData a1 ,NFData a2 ,NFData a3 ,NFData a4 )=>NFData (a1 ,a2 ,a3 ,a4 )wherernf :: (a1, a2, a3, a4) -> ()
rnf =(a1, a2, a3, a4) -> ()
forall (p :: * -> * -> *) a b.
(NFData2 p, NFData a, NFData b) =>
p a b -> ()
rnf2 -- |@since 1.4.3.0instance(NFData a1 ,NFData a2 ,NFData a3 )=>NFData1 ((,,,)a1 a2 a3 )whereliftRnf :: (a -> ()) -> (a1, a2, a3, a) -> ()
liftRnf =(a3 -> ()) -> (a -> ()) -> (a1, a2, a3, a) -> ()
forall (p :: * -> * -> *) a b.
NFData2 p =>
(a -> ()) -> (b -> ()) -> p a b -> ()
liftRnf2 a3 -> ()
forall a. NFData a => a -> ()
rnf -- |@since 1.4.3.0instance(NFData a1 ,NFData a2 )=>NFData2 ((,,,)a1 a2 )whereliftRnf2 :: (a -> ()) -> (b -> ()) -> (a1, a2, a, b) -> ()
liftRnf2 a -> ()
r b -> ()
r' (a1
x1 ,a2
x2 ,a
x3 ,b
x4 )=a1 -> ()
forall a. NFData a => a -> ()
rnf a1
x1 () -> () -> ()
`seq`a2 -> ()
forall a. NFData a => a -> ()
rnf a2
x2 () -> () -> ()
`seq`a -> ()
r a
x3 () -> () -> ()
`seq`b -> ()
r' b
x4 instance(NFData a1 ,NFData a2 ,NFData a3 ,NFData a4 ,NFData a5 )=>NFData (a1 ,a2 ,a3 ,a4 ,a5 )wherernf :: (a1, a2, a3, a4, a5) -> ()
rnf =(a1, a2, a3, a4, a5) -> ()
forall (p :: * -> * -> *) a b.
(NFData2 p, NFData a, NFData b) =>
p a b -> ()
rnf2 -- |@since 1.4.3.0instance(NFData a1 ,NFData a2 ,NFData a3 ,NFData a4 )=>NFData1 ((,,,,)a1 a2 a3 a4 )whereliftRnf :: (a -> ()) -> (a1, a2, a3, a4, a) -> ()
liftRnf =(a4 -> ()) -> (a -> ()) -> (a1, a2, a3, a4, a) -> ()
forall (p :: * -> * -> *) a b.
NFData2 p =>
(a -> ()) -> (b -> ()) -> p a b -> ()
liftRnf2 a4 -> ()
forall a. NFData a => a -> ()
rnf -- |@since 1.4.3.0instance(NFData a1 ,NFData a2 ,NFData a3 )=>NFData2 ((,,,,)a1 a2 a3 )whereliftRnf2 :: (a -> ()) -> (b -> ()) -> (a1, a2, a3, a, b) -> ()
liftRnf2 a -> ()
r b -> ()
r' (a1
x1 ,a2
x2 ,a3
x3 ,a
x4 ,b
x5 )=a1 -> ()
forall a. NFData a => a -> ()
rnf a1
x1 () -> () -> ()
`seq`a2 -> ()
forall a. NFData a => a -> ()
rnf a2
x2 () -> () -> ()
`seq`a3 -> ()
forall a. NFData a => a -> ()
rnf a3
x3 () -> () -> ()
`seq`a -> ()
r a
x4 () -> () -> ()
`seq`b -> ()
r' b
x5 instance(NFData a1 ,NFData a2 ,NFData a3 ,NFData a4 ,NFData a5 ,NFData a6 )=>NFData (a1 ,a2 ,a3 ,a4 ,a5 ,a6 )wherernf :: (a1, a2, a3, a4, a5, a6) -> ()
rnf =(a1, a2, a3, a4, a5, a6) -> ()
forall (p :: * -> * -> *) a b.
(NFData2 p, NFData a, NFData b) =>
p a b -> ()
rnf2 -- |@since 1.4.3.0instance(NFData a1 ,NFData a2 ,NFData a3 ,NFData a4 ,NFData a5 )=>NFData1 ((,,,,,)a1 a2 a3 a4 a5 )whereliftRnf :: (a -> ()) -> (a1, a2, a3, a4, a5, a) -> ()
liftRnf =(a5 -> ()) -> (a -> ()) -> (a1, a2, a3, a4, a5, a) -> ()
forall (p :: * -> * -> *) a b.
NFData2 p =>
(a -> ()) -> (b -> ()) -> p a b -> ()
liftRnf2 a5 -> ()
forall a. NFData a => a -> ()
rnf -- |@since 1.4.3.0instance(NFData a1 ,NFData a2 ,NFData a3 ,NFData a4 )=>NFData2 ((,,,,,)a1 a2 a3 a4 )whereliftRnf2 :: (a -> ()) -> (b -> ()) -> (a1, a2, a3, a4, a, b) -> ()
liftRnf2 a -> ()
r b -> ()
r' (a1
x1 ,a2
x2 ,a3
x3 ,a4
x4 ,a
x5 ,b
x6 )=a1 -> ()
forall a. NFData a => a -> ()
rnf a1
x1 () -> () -> ()
`seq`a2 -> ()
forall a. NFData a => a -> ()
rnf a2
x2 () -> () -> ()
`seq`a3 -> ()
forall a. NFData a => a -> ()
rnf a3
x3 () -> () -> ()
`seq`a4 -> ()
forall a. NFData a => a -> ()
rnf a4
x4 () -> () -> ()
`seq`a -> ()
r a
x5 () -> () -> ()
`seq`b -> ()
r' b
x6 instance(NFData a1 ,NFData a2 ,NFData a3 ,NFData a4 ,NFData a5 ,NFData a6 ,NFData a7 )=>NFData (a1 ,a2 ,a3 ,a4 ,a5 ,a6 ,a7 )wherernf :: (a1, a2, a3, a4, a5, a6, a7) -> ()
rnf =(a1, a2, a3, a4, a5, a6, a7) -> ()
forall (p :: * -> * -> *) a b.
(NFData2 p, NFData a, NFData b) =>
p a b -> ()
rnf2 -- |@since 1.4.3.0instance(NFData a1 ,NFData a2 ,NFData a3 ,NFData a4 ,NFData a5 ,NFData a6 )=>NFData1 ((,,,,,,)a1 a2 a3 a4 a5 a6 )whereliftRnf :: (a -> ()) -> (a1, a2, a3, a4, a5, a6, a) -> ()
liftRnf =(a6 -> ()) -> (a -> ()) -> (a1, a2, a3, a4, a5, a6, a) -> ()
forall (p :: * -> * -> *) a b.
NFData2 p =>
(a -> ()) -> (b -> ()) -> p a b -> ()
liftRnf2 a6 -> ()
forall a. NFData a => a -> ()
rnf -- |@since 1.4.3.0instance(NFData a1 ,NFData a2 ,NFData a3 ,NFData a4 ,NFData a5 )=>NFData2 ((,,,,,,)a1 a2 a3 a4 a5 )whereliftRnf2 :: (a -> ()) -> (b -> ()) -> (a1, a2, a3, a4, a5, a, b) -> ()
liftRnf2 a -> ()
r b -> ()
r' (a1
x1 ,a2
x2 ,a3
x3 ,a4
x4 ,a5
x5 ,a
x6 ,b
x7 )=a1 -> ()
forall a. NFData a => a -> ()
rnf a1
x1 () -> () -> ()
`seq`a2 -> ()
forall a. NFData a => a -> ()
rnf a2
x2 () -> () -> ()
`seq`a3 -> ()
forall a. NFData a => a -> ()
rnf a3
x3 () -> () -> ()
`seq`a4 -> ()
forall a. NFData a => a -> ()
rnf a4
x4 () -> () -> ()
`seq`a5 -> ()
forall a. NFData a => a -> ()
rnf a5
x5 () -> () -> ()
`seq`a -> ()
r a
x6 () -> () -> ()
`seq`b -> ()
r' b
x7 instance(NFData a1 ,NFData a2 ,NFData a3 ,NFData a4 ,NFData a5 ,NFData a6 ,NFData a7 ,NFData a8 )=>NFData (a1 ,a2 ,a3 ,a4 ,a5 ,a6 ,a7 ,a8 )wherernf :: (a1, a2, a3, a4, a5, a6, a7, a8) -> ()
rnf =(a1, a2, a3, a4, a5, a6, a7, a8) -> ()
forall (p :: * -> * -> *) a b.
(NFData2 p, NFData a, NFData b) =>
p a b -> ()
rnf2 -- |@since 1.4.3.0instance(NFData a1 ,NFData a2 ,NFData a3 ,NFData a4 ,NFData a5 ,NFData a6 ,NFData a7 )=>NFData1 ((,,,,,,,)a1 a2 a3 a4 a5 a6 a7 )whereliftRnf :: (a -> ()) -> (a1, a2, a3, a4, a5, a6, a7, a) -> ()
liftRnf =(a7 -> ()) -> (a -> ()) -> (a1, a2, a3, a4, a5, a6, a7, a) -> ()
forall (p :: * -> * -> *) a b.
NFData2 p =>
(a -> ()) -> (b -> ()) -> p a b -> ()
liftRnf2 a7 -> ()
forall a. NFData a => a -> ()
rnf -- |@since 1.4.3.0instance(NFData a1 ,NFData a2 ,NFData a3 ,NFData a4 ,NFData a5 ,NFData a6 )=>NFData2 ((,,,,,,,)a1 a2 a3 a4 a5 a6 )whereliftRnf2 :: (a -> ()) -> (b -> ()) -> (a1, a2, a3, a4, a5, a6, a, b) -> ()
liftRnf2 a -> ()
r b -> ()
r' (a1
x1 ,a2
x2 ,a3
x3 ,a4
x4 ,a5
x5 ,a6
x6 ,a
x7 ,b
x8 )=a1 -> ()
forall a. NFData a => a -> ()
rnf a1
x1 () -> () -> ()
`seq`a2 -> ()
forall a. NFData a => a -> ()
rnf a2
x2 () -> () -> ()
`seq`a3 -> ()
forall a. NFData a => a -> ()
rnf a3
x3 () -> () -> ()
`seq`a4 -> ()
forall a. NFData a => a -> ()
rnf a4
x4 () -> () -> ()
`seq`a5 -> ()
forall a. NFData a => a -> ()
rnf a5
x5 () -> () -> ()
`seq`a6 -> ()
forall a. NFData a => a -> ()
rnf a6
x6 () -> () -> ()
`seq`a -> ()
r a
x7 () -> () -> ()
`seq`b -> ()
r' b
x8 instance(NFData a1 ,NFData a2 ,NFData a3 ,NFData a4 ,NFData a5 ,NFData a6 ,NFData a7 ,NFData a8 ,NFData a9 )=>NFData (a1 ,a2 ,a3 ,a4 ,a5 ,a6 ,a7 ,a8 ,a9 )wherernf :: (a1, a2, a3, a4, a5, a6, a7, a8, a9) -> ()
rnf =(a1, a2, a3, a4, a5, a6, a7, a8, a9) -> ()
forall (p :: * -> * -> *) a b.
(NFData2 p, NFData a, NFData b) =>
p a b -> ()
rnf2 -- |@since 1.4.3.0instance(NFData a1 ,NFData a2 ,NFData a3 ,NFData a4 ,NFData a5 ,NFData a6 ,NFData a7 ,NFData a8 )=>NFData1 ((,,,,,,,,)a1 a2 a3 a4 a5 a6 a7 a8 )whereliftRnf :: (a -> ()) -> (a1, a2, a3, a4, a5, a6, a7, a8, a) -> ()
liftRnf =(a8 -> ())
-> (a -> ()) -> (a1, a2, a3, a4, a5, a6, a7, a8, a) -> ()
forall (p :: * -> * -> *) a b.
NFData2 p =>
(a -> ()) -> (b -> ()) -> p a b -> ()
liftRnf2 a8 -> ()
forall a. NFData a => a -> ()
rnf -- |@since 1.4.3.0instance(NFData a1 ,NFData a2 ,NFData a3 ,NFData a4 ,NFData a5 ,NFData a6 ,NFData a7 )=>NFData2 ((,,,,,,,,)a1 a2 a3 a4 a5 a6 a7 )whereliftRnf2 :: (a -> ()) -> (b -> ()) -> (a1, a2, a3, a4, a5, a6, a7, a, b) -> ()
liftRnf2 a -> ()
r b -> ()
r' (a1
x1 ,a2
x2 ,a3
x3 ,a4
x4 ,a5
x5 ,a6
x6 ,a7
x7 ,a
x8 ,b
x9 )=a1 -> ()
forall a. NFData a => a -> ()
rnf a1
x1 () -> () -> ()
`seq`a2 -> ()
forall a. NFData a => a -> ()
rnf a2
x2 () -> () -> ()
`seq`a3 -> ()
forall a. NFData a => a -> ()
rnf a3
x3 () -> () -> ()
`seq`a4 -> ()
forall a. NFData a => a -> ()
rnf a4
x4 () -> () -> ()
`seq`a5 -> ()
forall a. NFData a => a -> ()
rnf a5
x5 () -> () -> ()
`seq`a6 -> ()
forall a. NFData a => a -> ()
rnf a6
x6 () -> () -> ()
`seq`a7 -> ()
forall a. NFData a => a -> ()
rnf a7
x7 () -> () -> ()
`seq`a -> ()
r a
x8 () -> () -> ()
`seq`b -> ()
r' b
x9 ------------------------------------------------------------------------------ ByteArray
#if BYTEARRAY_IN_BASE
-- |@since 1.4.7.0instanceNFDataByteArraywherernf(ByteArray_)=()-- |@since 1.4.8.0instanceNFData(MutableByteArrays)wherernf(MutableByteArray_)=()
#endif

AltStyle によって変換されたページ (->オリジナル) /