{-# LANGUAGE BangPatterns #-}
{-# LANGUAGE CPP #-}
{-# LANGUAGE DefaultSignatures #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE Safe #-}
{-# LANGUAGE TypeOperators #-}
#if __GLASGOW_HASKELL__ >= 706
{-# LANGUAGE PolyKinds #-}
#endif
#if __GLASGOW_HASKELL__ >= 708
{-# LANGUAGE EmptyCase #-}
#endif
#if __GLASGOW_HASKELL__ >= 811 && __GLASGOW_HASKELL__ < 901
{-# OPTIONS_GHC -Wno-deprecations #-}
#endif
module Control.DeepSeq (
NFData(rnf),
deepseq,
force,
($!!),
(<$!!>),
rwhnf,
NFData1(liftRnf), rnf1,
NFData2(liftRnf2), rnf2,
) where
import Control.Applicative
import Control.Concurrent ( ThreadId, MVar )
import Control.Exception ( MaskingState(..) )
import Data.IORef
import Data.STRef
import Data.Int
import Data.Word
import Data.Ratio
import Data.Complex
import Data.Array
import Data.Fixed
import Data.Version
import Data.Monoid as Mon
import Data.Typeable ( TypeRep, TyCon )
import Data.Unique ( Unique )
import Foreign.Ptr
import Foreign.C.Types
import System.Exit ( ExitCode(..) )
import System.Mem.StableName ( StableName )
#if MIN_VERSION_base(4,6,0)
import Data.Ord ( Down(Down) )
#else
import Control.DeepSeq.BackDoor ( Down(Down) )
#endif
#if MIN_VERSION_base(4,7,0)
import Data.Proxy ( Proxy(Proxy) )
#endif
#if MIN_VERSION_base(4,10,0)
import Data.Type.Equality ( (:~:), (:~~:) )
#elif MIN_VERSION_base(4,9,0)
import Data.Type.Equality ( (:~:) )
#elif MIN_VERSION_base(4,7,0)
import Control.DeepSeq.BackDoor ( (:~:) )
#endif
#if MIN_VERSION_base(4,8,0)
import Data.Functor.Identity ( Identity(..) )
import Data.Typeable ( rnfTypeRep, rnfTyCon )
import Data.Void ( Void, absurd )
import Numeric.Natural ( Natural )
#else
import Data.Typeable ( typeRepTyCon, typeRepArgs, tyConPackage, tyConModule, tyConName )
#endif
#if MIN_VERSION_base(4,9,0)
import Data.List.NonEmpty ( NonEmpty (..) )
import Data.Semigroup as Semi
#endif
#if MIN_VERSION_base(4,9,0)
import GHC.Stack.Types ( CallStack(..), SrcLoc(..) )
import Data.Functor.Compose
import qualified Data.Functor.Sum as Functor
import qualified Data.Functor.Product as Functor
#elif MIN_VERSION_base(4,8,1)
import GHC.Stack ( CallStack(..) )
import GHC.SrcLoc ( SrcLoc(..) )
#endif
import GHC.Fingerprint.Type ( Fingerprint(..) )
import GHC.Generics
class GNFData arity f where
grnf :: RnfArgs arity a -> f a -> ()
instance GNFData arity V1 where
#if __GLASGOW_HASKELL__ >= 708
grnf :: forall a. RnfArgs arity a -> V1 a -> ()
grnf RnfArgs arity a
_ V1 a
x = case V1 a
x of {}
#else
grnf _ !_ = error "Control.DeepSeq.rnf: uninhabited type"
#endif
data Zero
data One
data RnfArgs arity a where
RnfArgs0 :: RnfArgs Zero a
RnfArgs1 :: (a -> ()) -> RnfArgs One a
instance GNFData arity U1 where
grnf :: forall a. RnfArgs arity a -> U1 a -> ()
grnf RnfArgs arity a
_ U1 a
U1 = ()
instance NFData a => GNFData arity (K1 i a) where
grnf :: forall a. RnfArgs arity a -> K1 i a a -> ()
grnf RnfArgs arity a
_ = forall a. NFData a => a -> ()
rnf forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall k i c (p :: k). K1 i c p -> c
unK1
{-# INLINEABLE grnf #-}
instance GNFData arity a => GNFData arity (M1 i c a) where
grnf :: forall a. RnfArgs arity a -> M1 i c a a -> ()
grnf RnfArgs arity a
args = forall arity (f :: * -> *) a.
GNFData arity f =>
RnfArgs arity a -> f a -> ()
grnf RnfArgs arity a
args forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall k i (c :: Meta) (f :: k -> *) (p :: k). M1 i c f p -> f p
unM1
{-# INLINEABLE grnf #-}
#if MIN_VERSION_base(4,9,0)
instance GNFData arity (URec a) where
grnf :: forall a. RnfArgs arity a -> URec a a -> ()
grnf RnfArgs arity a
_ = forall a. a -> ()
rwhnf
{-# INLINEABLE grnf #-}
#endif
instance (GNFData arity a, GNFData arity b) => GNFData arity (a :*: b) where
grnf :: forall a. RnfArgs arity a -> (:*:) a b a -> ()
grnf RnfArgs arity a
args (a a
x :*: b a
y) = forall arity (f :: * -> *) a.
GNFData arity f =>
RnfArgs arity a -> f a -> ()
grnf RnfArgs arity a
args a a
x seq :: forall a b. a -> b -> b
`seq` forall arity (f :: * -> *) a.
GNFData arity f =>
RnfArgs arity a -> f a -> ()
grnf RnfArgs arity a
args b a
y
{-# INLINEABLE grnf #-}
instance (GNFData arity a, GNFData arity b) => GNFData arity (a :+: b) where
grnf :: forall a. RnfArgs arity a -> (:+:) a b a -> ()
grnf RnfArgs arity a
args (L1 a a
x) = 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 (R1 b a
x) = forall arity (f :: * -> *) a.
GNFData arity f =>
RnfArgs arity a -> f a -> ()
grnf RnfArgs arity a
args b a
x
{-# INLINEABLE grnf #-}
instance GNFData One Par1 where
grnf :: forall a. RnfArgs One a -> Par1 a -> ()
grnf (RnfArgs1 a -> ()
r) = a -> ()
r forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall p. Par1 p -> p
unPar1
instance NFData1 f => GNFData One (Rec1 f) where
grnf :: forall a. RnfArgs One a -> Rec1 f a -> ()
grnf (RnfArgs1 a -> ()
r) = forall (f :: * -> *) a. NFData1 f => (a -> ()) -> f a -> ()
liftRnf a -> ()
r forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall k (f :: k -> *) (p :: k). Rec1 f p -> f p
unRec1
instance (NFData1 f, GNFData One g) => GNFData One (f :.: g) where
grnf :: forall a. RnfArgs One a -> (:.:) f g a -> ()
grnf RnfArgs One a
args = forall (f :: * -> *) a. NFData1 f => (a -> ()) -> f a -> ()
liftRnf (forall arity (f :: * -> *) a.
GNFData arity f =>
RnfArgs arity a -> f a -> ()
grnf RnfArgs One a
args) forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall k2 k1 (f :: k2 -> *) (g :: k1 -> k2) (p :: k1).
(:.:) f g p -> f (g p)
unComp1
infixr 0 $!!
deepseq :: NFData a => a -> b -> b
deepseq :: forall a b. NFData a => a -> b -> b
deepseq a
a b
b = forall a. NFData a => a -> ()
rnf a
a seq :: forall a b. a -> b -> b
`seq` b
b
($!!) :: (NFData a) => (a -> b) -> a -> b
a -> b
f $!! :: forall a b. NFData a => (a -> b) -> a -> b
$!! a
x = a
x forall a b. NFData a => a -> b -> b
`deepseq` a -> b
f a
x
force :: (NFData a) => a -> a
force :: forall a. NFData a => a -> a
force a
x = a
x forall a b. NFData a => a -> b -> b
`deepseq` a
x
(<$!!>) :: (Monad m, NFData b) => (a -> b) -> m a -> m b
#if MIN_VERSION_base(4,8,0)
a -> b
f <$!!> :: forall (m :: * -> *) b a.
(Monad m, NFData b) =>
(a -> b) -> m a -> m b
<$!!> m a
m = m a
m forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \a
x -> forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a b. NFData a => (a -> b) -> a -> b
$!! a -> b
f a
x
#else
f <$!!> m = m >>= \x -> return $!! f x
#endif
infixl 4 <$!!>
rwhnf :: a -> ()
rwhnf :: forall a. a -> ()
rwhnf = (seq :: forall a b. a -> b -> b
`seq` ())
{-# INLINE rwhnf #-}
class NFData a where
rnf :: a -> ()
default rnf :: (Generic a, GNFData Zero (Rep a)) => a -> ()
rnf = forall arity (f :: * -> *) a.
GNFData arity f =>
RnfArgs arity a -> f a -> ()
grnf forall a. RnfArgs Zero a
RnfArgs0 forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a x. Generic a => a -> Rep a x
from
class NFData1 f where
liftRnf :: (a -> ()) -> f a -> ()
default liftRnf :: (Generic1 f, GNFData One (Rep1 f)) => (a -> ()) -> f a -> ()
liftRnf a -> ()
r = forall arity (f :: * -> *) a.
GNFData arity f =>
RnfArgs arity a -> f a -> ()
grnf (forall a. (a -> ()) -> RnfArgs One a
RnfArgs1 a -> ()
r) forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall k (f :: k -> *) (a :: k). Generic1 f => f a -> Rep1 f a
from1
rnf1 :: (NFData1 f, NFData a) => f a -> ()
rnf1 :: forall (f :: * -> *) a. (NFData1 f, NFData a) => f a -> ()
rnf1 = forall (f :: * -> *) a. NFData1 f => (a -> ()) -> f a -> ()
liftRnf forall a. NFData a => a -> ()
rnf
class NFData2 p where
liftRnf2 :: (a -> ()) -> (b -> ()) -> p a b -> ()
rnf2 :: (NFData2 p, NFData a, NFData b) => p a b -> ()
rnf2 :: forall (p :: * -> * -> *) a b.
(NFData2 p, NFData a, NFData b) =>
p a b -> ()
rnf2 = forall (p :: * -> * -> *) a b.
NFData2 p =>
(a -> ()) -> (b -> ()) -> p a b -> ()
liftRnf2 forall a. NFData a => a -> ()
rnf forall a. NFData a => a -> ()
rnf
instance NFData Int where rnf :: Int -> ()
rnf = forall a. a -> ()
rwhnf
instance NFData Word where rnf :: Word -> ()
rnf = forall a. a -> ()
rwhnf
instance NFData Integer where rnf :: Integer -> ()
rnf = forall a. a -> ()
rwhnf
instance NFData Float where rnf :: Float -> ()
rnf = forall a. a -> ()
rwhnf
instance NFData Double where rnf :: Double -> ()
rnf = forall a. a -> ()
rwhnf
instance NFData Char where rnf :: Char -> ()
rnf = forall a. a -> ()
rwhnf
instance NFData Bool where rnf :: Bool -> ()
rnf = forall a. a -> ()
rwhnf
instance NFData Ordering where rnf :: Ordering -> ()
rnf = forall a. a -> ()
rwhnf
instance NFData () where rnf :: () -> ()
rnf = forall a. a -> ()
rwhnf
instance NFData Int8 where rnf :: Int8 -> ()
rnf = forall a. a -> ()
rwhnf
instance NFData Int16 where rnf :: Int16 -> ()
rnf = forall a. a -> ()
rwhnf
instance NFData Int32 where rnf :: Int32 -> ()
rnf = forall a. a -> ()
rwhnf
instance NFData Int64 where rnf :: Int64 -> ()
rnf = forall a. a -> ()
rwhnf
instance NFData Word8 where rnf :: Word8 -> ()
rnf = forall a. a -> ()
rwhnf
instance NFData Word16 where rnf :: Word16 -> ()
rnf = forall a. a -> ()
rwhnf
instance NFData Word32 where rnf :: Word32 -> ()
rnf = forall a. a -> ()
rwhnf
instance NFData Word64 where rnf :: Word64 -> ()
rnf = forall a. a -> ()
rwhnf
instance NFData MaskingState where rnf :: MaskingState -> ()
rnf = forall a. a -> ()
rwhnf
#if MIN_VERSION_base(4,7,0)
instance NFData (Proxy a) where rnf :: Proxy a -> ()
rnf Proxy a
Proxy = ()
instance NFData1 Proxy where liftRnf :: forall a. (a -> ()) -> Proxy a -> ()
liftRnf a -> ()
_ Proxy a
Proxy = ()
instance NFData (a :~: b) where rnf :: (a :~: b) -> ()
rnf = forall a. a -> ()
rwhnf
instance NFData1 ((:~:) a) where liftRnf :: forall a. (a -> ()) -> (a :~: a) -> ()
liftRnf a -> ()
_ = forall a. a -> ()
rwhnf
instance NFData2 (:~:) where liftRnf2 :: forall a b. (a -> ()) -> (b -> ()) -> (a :~: b) -> ()
liftRnf2 a -> ()
_ b -> ()
_ = forall a. a -> ()
rwhnf
#endif
#if MIN_VERSION_base(4,10,0)
instance NFData (a :~~: b) where rnf :: (a :~~: b) -> ()
rnf = forall a. a -> ()
rwhnf
instance NFData1 ((:~~:) a) where liftRnf :: forall a. (a -> ()) -> (a :~~: a) -> ()
liftRnf a -> ()
_ = forall a. a -> ()
rwhnf
instance NFData2 (:~~:) where liftRnf2 :: forall a b. (a -> ()) -> (b -> ()) -> (a :~~: b) -> ()
liftRnf2 a -> ()
_ b -> ()
_ = forall a. a -> ()
rwhnf
#endif
#if MIN_VERSION_base(4,8,0)
instance NFData a => NFData (Identity a) where
rnf :: Identity a -> ()
rnf = forall (f :: * -> *) a. (NFData1 f, NFData a) => f a -> ()
rnf1
instance NFData1 Identity where
liftRnf :: forall a. (a -> ()) -> Identity a -> ()
liftRnf a -> ()
r = a -> ()
r forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Identity a -> a
runIdentity
instance NFData Void where
rnf :: Void -> ()
rnf = forall a. Void -> a
absurd
instance NFData Natural where rnf :: Natural -> ()
rnf = forall a. a -> ()
rwhnf
#endif
instance NFData (Fixed a) where rnf :: Fixed a -> ()
rnf = forall a. a -> ()
rwhnf
instance NFData1 Fixed where liftRnf :: forall a. (a -> ()) -> Fixed a -> ()
liftRnf a -> ()
_ = forall a. a -> ()
rwhnf
instance NFData (a -> b) where rnf :: (a -> b) -> ()
rnf = forall a. a -> ()
rwhnf
#if MIN_VERSION_base(4,9,0)
instance NFData1 Ratio where
liftRnf :: forall a. (a -> ()) -> Ratio a -> ()
liftRnf a -> ()
r Ratio a
x = a -> ()
r (forall a. Ratio a -> a
numerator Ratio a
x) seq :: forall a b. a -> b -> b
`seq` a -> ()
r (forall a. Ratio a -> a
denominator Ratio a
x)
instance (NFData1 f, NFData1 g) => NFData1 (Compose f g) where
liftRnf :: forall a. (a -> ()) -> Compose f g a -> ()
liftRnf a -> ()
r = forall (f :: * -> *) a. NFData1 f => (a -> ()) -> f a -> ()
liftRnf (forall (f :: * -> *) a. NFData1 f => (a -> ()) -> f a -> ()
liftRnf a -> ()
r) forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall {k1} {k2} (f :: k1 -> *) (g :: k2 -> k1) (a :: k2).
Compose f g a -> f (g a)
getCompose
instance (NFData1 f, NFData1 g, NFData a) => NFData (Compose f g a) where
rnf :: Compose f g a -> ()
rnf = forall (f :: * -> *) a. (NFData1 f, NFData a) => f a -> ()
rnf1
instance (NFData1 f, NFData1 g) => NFData1 (Functor.Sum f g) where
liftRnf :: forall a. (a -> ()) -> Sum f g a -> ()
liftRnf a -> ()
rnf0 (Functor.InL f a
l) = forall (f :: * -> *) a. NFData1 f => (a -> ()) -> f a -> ()
liftRnf a -> ()
rnf0 f a
l
liftRnf a -> ()
rnf0 (Functor.InR g a
r) = forall (f :: * -> *) a. NFData1 f => (a -> ()) -> f a -> ()
liftRnf a -> ()
rnf0 g a
r
instance (NFData1 f, NFData1 g, NFData a) => NFData (Functor.Sum f g a) where
rnf :: Sum f g a -> ()
rnf = forall (f :: * -> *) a. (NFData1 f, NFData a) => f a -> ()
rnf1
instance (NFData1 f, NFData1 g) => NFData1 (Functor.Product f g) where
liftRnf :: forall a. (a -> ()) -> Product f g a -> ()
liftRnf a -> ()
rnf0 (Functor.Pair f a
f g a
g) = forall (f :: * -> *) a. NFData1 f => (a -> ()) -> f a -> ()
liftRnf a -> ()
rnf0 f a
f seq :: forall a b. a -> b -> b
`seq` forall (f :: * -> *) a. NFData1 f => (a -> ()) -> f a -> ()
liftRnf a -> ()
rnf0 g a
g
instance (NFData1 f, NFData1 g, NFData a) => NFData (Functor.Product f g a) where
rnf :: Product f g a -> ()
rnf = forall (f :: * -> *) a. (NFData1 f, NFData a) => f a -> ()
rnf1
instance NFData a => NFData (Ratio a) where
#else
instance (Integral a, NFData a) => NFData (Ratio a) where
#endif
rnf :: Ratio a -> ()
rnf Ratio a
x = forall a. NFData a => a -> ()
rnf (forall a. Ratio a -> a
numerator Ratio a
x, forall a. Ratio a -> a
denominator Ratio a
x)
instance (NFData a) => NFData (Complex a) where
rnf :: Complex a -> ()
rnf (a
x:+a
y) = forall a. NFData a => a -> ()
rnf a
x seq :: forall a b. a -> b -> b
`seq`
forall a. NFData a => a -> ()
rnf a
y seq :: forall a b. a -> b -> b
`seq`
()
instance NFData a => NFData (Maybe a) where rnf :: Maybe a -> ()
rnf = forall (f :: * -> *) a. (NFData1 f, NFData a) => f a -> ()
rnf1
instance NFData1 Maybe where
liftRnf :: forall a. (a -> ()) -> Maybe a -> ()
liftRnf a -> ()
_r Maybe a
Nothing = ()
liftRnf a -> ()
r (Just a
x) = a -> ()
r a
x
instance (NFData a, NFData b) => NFData (Either a b) where rnf :: Either a b -> ()
rnf = forall (f :: * -> *) a. (NFData1 f, NFData a) => f a -> ()
rnf1
instance (NFData a) => NFData1 (Either a) where liftRnf :: forall a. (a -> ()) -> Either a a -> ()
liftRnf = forall (p :: * -> * -> *) a b.
NFData2 p =>
(a -> ()) -> (b -> ()) -> p a b -> ()
liftRnf2 forall a. NFData a => a -> ()
rnf
instance NFData2 Either where
liftRnf2 :: forall a b. (a -> ()) -> (b -> ()) -> Either a b -> ()
liftRnf2 a -> ()
l b -> ()
_r (Left a
x) = a -> ()
l a
x
liftRnf2 a -> ()
_l b -> ()
r (Right b
y) = b -> ()
r b
y
instance NFData Data.Version.Version where
rnf :: Version -> ()
rnf (Data.Version.Version [Int]
branch [String]
tags) = forall a. NFData a => a -> ()
rnf [Int]
branch seq :: forall a b. a -> b -> b
`seq` forall a. NFData a => a -> ()
rnf [String]
tags
instance NFData a => NFData [a] where rnf :: [a] -> ()
rnf = forall (f :: * -> *) a. (NFData1 f, NFData a) => f a -> ()
rnf1
instance NFData1 [] where
liftRnf :: forall a. (a -> ()) -> [a] -> ()
liftRnf a -> ()
r = [a] -> ()
go
where
go :: [a] -> ()
go [] = ()
go (a
x:[a]
xs) = a -> ()
r a
x seq :: forall a b. a -> b -> b
`seq` [a] -> ()
go [a]
xs
instance NFData a => NFData (ZipList a) where rnf :: ZipList a -> ()
rnf = forall (f :: * -> *) a. (NFData1 f, NFData a) => f a -> ()
rnf1
instance NFData1 ZipList where
liftRnf :: forall a. (a -> ()) -> ZipList a -> ()
liftRnf a -> ()
r = forall (f :: * -> *) a. NFData1 f => (a -> ()) -> f a -> ()
liftRnf a -> ()
r forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. ZipList a -> [a]
getZipList
instance NFData a => NFData (Const a b) where
rnf :: Const a b -> ()
rnf = forall a. NFData a => a -> ()
rnf forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall {k} a (b :: k). Const a b -> a
getConst
instance NFData a => NFData1 (Const a) where
liftRnf :: forall a. (a -> ()) -> Const a a -> ()
liftRnf a -> ()
_ = forall a. NFData a => a -> ()
rnf forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall {k} a (b :: k). Const a b -> a
getConst
instance NFData2 Const where
liftRnf2 :: forall a b. (a -> ()) -> (b -> ()) -> Const a b -> ()
liftRnf2 a -> ()
r b -> ()
_ = a -> ()
r forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall {k} a (b :: k). Const a b -> a
getConst
#if __GLASGOW_HASKELL__ >= 711
instance (NFData a, NFData b) => NFData (Array a b) where
#else
instance (Ix a, NFData a, NFData b) => NFData (Array a b) where
#endif
rnf :: Array a b -> ()
rnf Array a b
x = forall a. NFData a => a -> ()
rnf (forall i e. Array i e -> (i, i)
bounds Array a b
x, forall i e. Array i e -> [e]
Data.Array.elems Array a b
x)
#if __GLASGOW_HASKELL__ >= 711
instance (NFData a) => NFData1 (Array a) where
#else
instance (Ix a, NFData a) => NFData1 (Array a) where
#endif
liftRnf :: forall a. (a -> ()) -> Array a a -> ()
liftRnf a -> ()
r Array a a
x = forall a. NFData a => a -> ()
rnf (forall i e. Array i e -> (i, i)
bounds Array a a
x) seq :: forall a b. a -> b -> b
`seq` forall (f :: * -> *) a. NFData1 f => (a -> ()) -> f a -> ()
liftRnf a -> ()
r (forall i e. Array i e -> [e]
Data.Array.elems Array a a
x)
#if __GLASGOW_HASKELL__ >= 711
instance NFData2 Array where
liftRnf2 :: forall a b. (a -> ()) -> (b -> ()) -> Array a b -> ()
liftRnf2 a -> ()
r b -> ()
r' Array a b
x = forall (p :: * -> * -> *) a b.
NFData2 p =>
(a -> ()) -> (b -> ()) -> p a b -> ()
liftRnf2 a -> ()
r a -> ()
r (forall i e. Array i e -> (i, i)
bounds Array a b
x) seq :: forall a b. a -> b -> b
`seq` forall (f :: * -> *) a. NFData1 f => (a -> ()) -> f a -> ()
liftRnf b -> ()
r' (forall i e. Array i e -> [e]
Data.Array.elems Array a b
x)
#endif
instance NFData a => NFData (Down a) where rnf :: Down a -> ()
rnf = forall (f :: * -> *) a. (NFData1 f, NFData a) => f a -> ()
rnf1
instance NFData1 Down where
liftRnf :: forall a. (a -> ()) -> Down a -> ()
liftRnf a -> ()
r (Down a
x) = a -> ()
r a
x
instance NFData a => NFData (Dual a) where rnf :: Dual a -> ()
rnf = forall (f :: * -> *) a. (NFData1 f, NFData a) => f a -> ()
rnf1
instance NFData1 Dual where
liftRnf :: forall a. (a -> ()) -> Dual a -> ()
liftRnf a -> ()
r (Dual a
x) = a -> ()
r a
x
instance NFData a => NFData (Mon.First a) where rnf :: First a -> ()
rnf = forall (f :: * -> *) a. (NFData1 f, NFData a) => f a -> ()
rnf1
instance NFData1 Mon.First where
liftRnf :: forall a. (a -> ()) -> First a -> ()
liftRnf a -> ()
r (Mon.First Maybe a
x) = forall (f :: * -> *) a. NFData1 f => (a -> ()) -> f a -> ()
liftRnf a -> ()
r Maybe a
x
instance NFData a => NFData (Mon.Last a) where rnf :: Last a -> ()
rnf = forall (f :: * -> *) a. (NFData1 f, NFData a) => f a -> ()
rnf1
instance NFData1 Mon.Last where
liftRnf :: forall a. (a -> ()) -> Last a -> ()
liftRnf a -> ()
r (Mon.Last Maybe a
x) = forall (f :: * -> *) a. NFData1 f => (a -> ()) -> f a -> ()
liftRnf a -> ()
r Maybe a
x
instance NFData Any where rnf :: Any -> ()
rnf = forall a. NFData a => a -> ()
rnf forall b c a. (b -> c) -> (a -> b) -> a -> c
. Any -> Bool
getAny
instance NFData All where rnf :: All -> ()
rnf = forall a. NFData a => a -> ()
rnf forall b c a. (b -> c) -> (a -> b) -> a -> c
. All -> Bool
getAll
instance NFData a => NFData (Sum a) where rnf :: Sum a -> ()
rnf = forall (f :: * -> *) a. (NFData1 f, NFData a) => f a -> ()
rnf1
instance NFData1 Sum where
liftRnf :: forall a. (a -> ()) -> Sum a -> ()
liftRnf a -> ()
r (Sum a
x) = a -> ()
r a
x
instance NFData a => NFData (Product a) where rnf :: Product a -> ()
rnf = forall (f :: * -> *) a. (NFData1 f, NFData a) => f a -> ()
rnf1
instance NFData1 Product where
liftRnf :: forall a. (a -> ()) -> Product a -> ()
liftRnf a -> ()
r (Product a
x) = a -> ()
r a
x
instance NFData (StableName a) where
rnf :: StableName a -> ()
rnf = forall a. a -> ()
rwhnf
instance NFData1 StableName where
liftRnf :: forall a. (a -> ()) -> StableName a -> ()
liftRnf a -> ()
_ = forall a. a -> ()
rwhnf
instance NFData ThreadId where
rnf :: ThreadId -> ()
rnf = forall a. a -> ()
rwhnf
instance NFData Unique where
rnf :: Unique -> ()
rnf = forall a. a -> ()
rwhnf
#if MIN_VERSION_base(4,8,0)
instance NFData TypeRep where
rnf :: TypeRep -> ()
rnf TypeRep
tyrep = TypeRep -> ()
rnfTypeRep TypeRep
tyrep
instance NFData TyCon where
rnf :: TyCon -> ()
rnf TyCon
tycon = TyCon -> ()
rnfTyCon TyCon
tycon
#else
instance NFData TypeRep where
rnf tr = rnf (typeRepTyCon tr) `seq` rnf (typeRepArgs tr)
instance NFData TyCon where
rnf tc = rnf (tyConPackage tc) `seq`
rnf (tyConModule tc) `seq`
rnf (tyConName tc)
#endif
instance NFData (IORef a) where
rnf :: IORef a -> ()
rnf = forall a. a -> ()
rwhnf
instance NFData1 IORef where
liftRnf :: forall a. (a -> ()) -> IORef a -> ()
liftRnf a -> ()
_ = forall a. a -> ()
rwhnf
instance NFData (STRef s a) where
rnf :: STRef s a -> ()
rnf = forall a. a -> ()
rwhnf
instance NFData1 (STRef s) where
liftRnf :: forall a. (a -> ()) -> STRef s a -> ()
liftRnf a -> ()
_ = forall a. a -> ()
rwhnf
instance NFData2 STRef where
liftRnf2 :: forall a b. (a -> ()) -> (b -> ()) -> STRef a b -> ()
liftRnf2 a -> ()
_ b -> ()
_ = forall a. a -> ()
rwhnf
instance NFData (MVar a) where
rnf :: MVar a -> ()
rnf = forall a. a -> ()
rwhnf
instance NFData1 MVar where
liftRnf :: forall a. (a -> ()) -> MVar a -> ()
liftRnf a -> ()
_ = forall a. a -> ()
rwhnf
instance NFData Fingerprint where
rnf :: Fingerprint -> ()
rnf (Fingerprint Word64
_ Word64
_) = ()
instance NFData (Ptr a) where
rnf :: Ptr a -> ()
rnf = forall a. a -> ()
rwhnf
instance NFData1 Ptr where
liftRnf :: forall a. (a -> ()) -> Ptr a -> ()
liftRnf a -> ()
_ = forall a. a -> ()
rwhnf
instance NFData (FunPtr a) where
rnf :: FunPtr a -> ()
rnf = forall a. a -> ()
rwhnf
instance NFData1 FunPtr where
liftRnf :: forall a. (a -> ()) -> FunPtr a -> ()
liftRnf a -> ()
_ = forall a. a -> ()
rwhnf
instance NFData CChar where rnf :: CChar -> ()
rnf = forall a. a -> ()
rwhnf
instance NFData CSChar where rnf :: CSChar -> ()
rnf = forall a. a -> ()
rwhnf
instance NFData CUChar where rnf :: CUChar -> ()
rnf = forall a. a -> ()
rwhnf
instance NFData CShort where rnf :: CShort -> ()
rnf = forall a. a -> ()
rwhnf
instance NFData CUShort where rnf :: CUShort -> ()
rnf = forall a. a -> ()
rwhnf
instance NFData CInt where rnf :: CInt -> ()
rnf = forall a. a -> ()
rwhnf
instance NFData CUInt where rnf :: CUInt -> ()
rnf = forall a. a -> ()
rwhnf
instance NFData CLong where rnf :: CLong -> ()
rnf = forall a. a -> ()
rwhnf
instance NFData CULong where rnf :: CULong -> ()
rnf = forall a. a -> ()
rwhnf
instance NFData CPtrdiff where rnf :: CPtrdiff -> ()
rnf = forall a. a -> ()
rwhnf
instance NFData CSize where rnf :: CSize -> ()
rnf = forall a. a -> ()
rwhnf
instance NFData CWchar where rnf :: CWchar -> ()
rnf = forall a. a -> ()
rwhnf
instance NFData CSigAtomic where rnf :: CSigAtomic -> ()
rnf = forall a. a -> ()
rwhnf
instance NFData CLLong where rnf :: CLLong -> ()
rnf = forall a. a -> ()
rwhnf
instance NFData CULLong where rnf :: CULLong -> ()
rnf = forall a. a -> ()
rwhnf
instance NFData CIntPtr where rnf :: CIntPtr -> ()
rnf = forall a. a -> ()
rwhnf
instance NFData CUIntPtr where rnf :: CUIntPtr -> ()
rnf = forall a. a -> ()
rwhnf
instance NFData CIntMax where rnf :: CIntMax -> ()
rnf = forall a. a -> ()
rwhnf
instance NFData CUIntMax where rnf :: CUIntMax -> ()
rnf = forall a. a -> ()
rwhnf
instance NFData CClock where rnf :: CClock -> ()
rnf = forall a. a -> ()
rwhnf
instance NFData CTime where rnf :: CTime -> ()
rnf = forall a. a -> ()
rwhnf
instance NFData CUSeconds where rnf :: CUSeconds -> ()
rnf = forall a. a -> ()
rwhnf
instance NFData CSUSeconds where rnf :: CSUSeconds -> ()
rnf = forall a. a -> ()
rwhnf
instance NFData CFloat where rnf :: CFloat -> ()
rnf = forall a. a -> ()
rwhnf
instance NFData CDouble where rnf :: CDouble -> ()
rnf = forall a. a -> ()
rwhnf
instance NFData CFile where rnf :: CFile -> ()
rnf = forall a. a -> ()
rwhnf
instance NFData CFpos where rnf :: CFpos -> ()
rnf = forall a. a -> ()
rwhnf
instance NFData CJmpBuf where rnf :: CJmpBuf -> ()
rnf = forall a. a -> ()
rwhnf
#if MIN_VERSION_base(4,10,0)
instance NFData CBool where rnf :: CBool -> ()
rnf = forall a. a -> ()
rwhnf
#endif
instance NFData ExitCode where
rnf :: ExitCode -> ()
rnf (ExitFailure Int
n) = forall a. NFData a => a -> ()
rnf Int
n
rnf ExitCode
ExitSuccess = ()
#if MIN_VERSION_base(4,9,0)
instance NFData a => NFData (NonEmpty a) where rnf :: NonEmpty a -> ()
rnf = forall (f :: * -> *) a. (NFData1 f, NFData a) => f a -> ()
rnf1
instance NFData1 NonEmpty where
liftRnf :: forall a. (a -> ()) -> NonEmpty a -> ()
liftRnf a -> ()
r (a
x :| [a]
xs) = a -> ()
r a
x seq :: forall a b. a -> b -> b
`seq` forall (f :: * -> *) a. NFData1 f => (a -> ()) -> f a -> ()
liftRnf a -> ()
r [a]
xs
instance NFData a => NFData (Min a) where rnf :: Min a -> ()
rnf = forall (f :: * -> *) a. (NFData1 f, NFData a) => f a -> ()
rnf1
instance NFData1 Min where
liftRnf :: forall a. (a -> ()) -> Min a -> ()
liftRnf a -> ()
r (Min a
a) = a -> ()
r a
a
instance NFData a => NFData (Max a) where rnf :: Max a -> ()
rnf = forall (f :: * -> *) a. (NFData1 f, NFData a) => f a -> ()
rnf1
instance NFData1 Max where
liftRnf :: forall a. (a -> ()) -> Max a -> ()
liftRnf a -> ()
r (Max a
a) = a -> ()
r a
a
instance (NFData a, NFData b) => NFData (Arg a b) where rnf :: Arg a b -> ()
rnf = forall (p :: * -> * -> *) a b.
(NFData2 p, NFData a, NFData b) =>
p a b -> ()
rnf2
instance (NFData a) => NFData1 (Arg a) where liftRnf :: forall a. (a -> ()) -> Arg a a -> ()
liftRnf = forall (p :: * -> * -> *) a b.
NFData2 p =>
(a -> ()) -> (b -> ()) -> p a b -> ()
liftRnf2 forall a. NFData a => a -> ()
rnf
instance NFData2 Arg where
liftRnf2 :: forall a b. (a -> ()) -> (b -> ()) -> Arg a b -> ()
liftRnf2 a -> ()
r b -> ()
r' (Arg a
a b
b) = a -> ()
r a
a seq :: forall a b. a -> b -> b
`seq` b -> ()
r' b
b seq :: forall a b. a -> b -> b
`seq` ()
instance NFData a => NFData (Semi.First a) where rnf :: First a -> ()
rnf = forall (f :: * -> *) a. (NFData1 f, NFData a) => f a -> ()
rnf1
instance NFData1 Semi.First where
liftRnf :: forall a. (a -> ()) -> First a -> ()
liftRnf a -> ()
r (Semi.First a
a) = a -> ()
r a
a
instance NFData a => NFData (Semi.Last a) where rnf :: Last a -> ()
rnf = forall (f :: * -> *) a. (NFData1 f, NFData a) => f a -> ()
rnf1
instance NFData1 Semi.Last where
liftRnf :: forall a. (a -> ()) -> Last a -> ()
liftRnf a -> ()
r (Semi.Last a
a) = a -> ()
r a
a
instance NFData m => NFData (WrappedMonoid m) where rnf :: WrappedMonoid m -> ()
rnf = forall (f :: * -> *) a. (NFData1 f, NFData a) => f a -> ()
rnf1
instance NFData1 WrappedMonoid where
liftRnf :: forall a. (a -> ()) -> WrappedMonoid a -> ()
liftRnf a -> ()
r (WrapMonoid a
a) = a -> ()
r a
a
#if __GLASGOW_HASKELL__ < 901
instance NFData a => NFData (Option a) where rnf = rnf1
instance NFData1 Option where
liftRnf r (Option a) = liftRnf r a
#endif
#endif
#if MIN_VERSION_base(4,9,0)
instance NFData SrcLoc where
rnf :: SrcLoc -> ()
rnf (SrcLoc String
a String
b String
c Int
d Int
e Int
f Int
g) = forall a. NFData a => a -> ()
rnf String
a seq :: forall a b. a -> b -> b
`seq` forall a. NFData a => a -> ()
rnf String
b seq :: forall a b. a -> b -> b
`seq` forall a. NFData a => a -> ()
rnf String
c seq :: forall a b. a -> b -> b
`seq`
forall a. NFData a => a -> ()
rnf Int
d seq :: forall a b. a -> b -> b
`seq` forall a. NFData a => a -> ()
rnf Int
e seq :: forall a b. a -> b -> b
`seq` forall a. NFData a => a -> ()
rnf Int
f seq :: forall a b. a -> b -> b
`seq` forall a. NFData a => a -> ()
rnf Int
g
instance NFData CallStack where
rnf :: CallStack -> ()
rnf CallStack
EmptyCallStack = ()
rnf (PushCallStack String
a SrcLoc
b CallStack
c) = forall a. NFData a => a -> ()
rnf String
a seq :: forall a b. a -> b -> b
`seq` forall a. NFData a => a -> ()
rnf SrcLoc
b seq :: forall a b. a -> b -> b
`seq` forall a. NFData a => a -> ()
rnf CallStack
c
rnf (FreezeCallStack CallStack
a) = forall a. NFData a => a -> ()
rnf CallStack
a
#elif MIN_VERSION_base(4,8,1)
instance NFData SrcLoc where
rnf sl = rnf (srcLocPackage sl) `seq`
rnf (srcLocModule sl) `seq`
rnf (srcLocFile sl) `seq`
rnf (srcLocStartLine sl) `seq`
rnf (srcLocStartCol sl) `seq`
rnf (srcLocEndLine sl) `seq`
rnf (srcLocEndCol sl)
instance NFData CallStack where
rnf = rnf . getCallStack
#endif
instance (NFData a, NFData b) => NFData (a,b) where rnf :: (a, b) -> ()
rnf = forall (p :: * -> * -> *) a b.
(NFData2 p, NFData a, NFData b) =>
p a b -> ()
rnf2
instance (NFData a) => NFData1 ((,) a) where liftRnf :: forall a. (a -> ()) -> (a, a) -> ()
liftRnf = forall (p :: * -> * -> *) a b.
NFData2 p =>
(a -> ()) -> (b -> ()) -> p a b -> ()
liftRnf2 forall a. NFData a => a -> ()
rnf
instance NFData2 (,) where
liftRnf2 :: forall a b. (a -> ()) -> (b -> ()) -> (a, b) -> ()
liftRnf2 a -> ()
r b -> ()
r' (a
x,b
y) = a -> ()
r a
x seq :: forall a b. a -> b -> b
`seq` b -> ()
r' b
y
instance (NFData a1, NFData a2, NFData a3) =>
NFData (a1, a2, a3) where rnf :: (a1, a2, a3) -> ()
rnf = forall (p :: * -> * -> *) a b.
(NFData2 p, NFData a, NFData b) =>
p a b -> ()
rnf2
instance (NFData a1, NFData a2) =>
NFData1 ((,,) a1 a2) where liftRnf :: forall a. (a -> ()) -> (a1, a2, a) -> ()
liftRnf = forall (p :: * -> * -> *) a b.
NFData2 p =>
(a -> ()) -> (b -> ()) -> p a b -> ()
liftRnf2 forall a. NFData a => a -> ()
rnf
instance (NFData a1) =>
NFData2 ((,,) a1) where
liftRnf2 :: forall a b. (a -> ()) -> (b -> ()) -> (a1, a, b) -> ()
liftRnf2 a -> ()
r b -> ()
r' (a1
x1,a
x2,b
x3) = forall a. NFData a => a -> ()
rnf a1
x1 seq :: forall a b. a -> b -> b
`seq` a -> ()
r a
x2 seq :: forall a b. a -> b -> b
`seq` b -> ()
r' b
x3
instance (NFData a1, NFData a2, NFData a3, NFData a4) =>
NFData (a1, a2, a3, a4) where rnf :: (a1, a2, a3, a4) -> ()
rnf = forall (p :: * -> * -> *) a b.
(NFData2 p, NFData a, NFData b) =>
p a b -> ()
rnf2
instance (NFData a1, NFData a2, NFData a3) =>
NFData1 ((,,,) a1 a2 a3) where liftRnf :: forall a. (a -> ()) -> (a1, a2, a3, a) -> ()
liftRnf = forall (p :: * -> * -> *) a b.
NFData2 p =>
(a -> ()) -> (b -> ()) -> p a b -> ()
liftRnf2 forall a. NFData a => a -> ()
rnf
instance (NFData a1, NFData a2) =>
NFData2 ((,,,) a1 a2) where
liftRnf2 :: forall a b. (a -> ()) -> (b -> ()) -> (a1, a2, a, b) -> ()
liftRnf2 a -> ()
r b -> ()
r' (a1
x1,a2
x2,a
x3,b
x4) = forall a. NFData a => a -> ()
rnf a1
x1 seq :: forall a b. a -> b -> b
`seq` forall a. NFData a => a -> ()
rnf a2
x2 seq :: forall a b. a -> b -> b
`seq` a -> ()
r a
x3 seq :: forall a b. a -> b -> b
`seq` b -> ()
r' b
x4
instance (NFData a1, NFData a2, NFData a3, NFData a4, NFData a5) =>
NFData (a1, a2, a3, a4, a5) where rnf :: (a1, a2, a3, a4, a5) -> ()
rnf = forall (p :: * -> * -> *) a b.
(NFData2 p, NFData a, NFData b) =>
p a b -> ()
rnf2
instance (NFData a1, NFData a2, NFData a3, NFData a4) =>
NFData1 ((,,,,) a1 a2 a3 a4) where liftRnf :: forall a. (a -> ()) -> (a1, a2, a3, a4, a) -> ()
liftRnf = forall (p :: * -> * -> *) a b.
NFData2 p =>
(a -> ()) -> (b -> ()) -> p a b -> ()
liftRnf2 forall a. NFData a => a -> ()
rnf
instance (NFData a1, NFData a2, NFData a3) =>
NFData2 ((,,,,) a1 a2 a3) where
liftRnf2 :: forall a b. (a -> ()) -> (b -> ()) -> (a1, a2, a3, a, b) -> ()
liftRnf2 a -> ()
r b -> ()
r' (a1
x1,a2
x2,a3
x3,a
x4,b
x5) = forall a. NFData a => a -> ()
rnf a1
x1 seq :: forall a b. a -> b -> b
`seq` forall a. NFData a => a -> ()
rnf a2
x2 seq :: forall a b. a -> b -> b
`seq` forall a. NFData a => a -> ()
rnf a3
x3 seq :: forall a b. a -> b -> b
`seq` a -> ()
r a
x4 seq :: forall a b. a -> b -> b
`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) where rnf :: (a1, a2, a3, a4, a5, a6) -> ()
rnf = forall (p :: * -> * -> *) a b.
(NFData2 p, NFData a, NFData b) =>
p a b -> ()
rnf2
instance (NFData a1, NFData a2, NFData a3, NFData a4, NFData a5) =>
NFData1 ((,,,,,) a1 a2 a3 a4 a5) where liftRnf :: forall a. (a -> ()) -> (a1, a2, a3, a4, a5, a) -> ()
liftRnf = forall (p :: * -> * -> *) a b.
NFData2 p =>
(a -> ()) -> (b -> ()) -> p a b -> ()
liftRnf2 forall a. NFData a => a -> ()
rnf
instance (NFData a1, NFData a2, NFData a3, NFData a4) =>
NFData2 ((,,,,,) a1 a2 a3 a4) where
liftRnf2 :: forall a b. (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) = forall a. NFData a => a -> ()
rnf a1
x1 seq :: forall a b. a -> b -> b
`seq` forall a. NFData a => a -> ()
rnf a2
x2 seq :: forall a b. a -> b -> b
`seq` forall a. NFData a => a -> ()
rnf a3
x3 seq :: forall a b. a -> b -> b
`seq` forall a. NFData a => a -> ()
rnf a4
x4 seq :: forall a b. a -> b -> b
`seq` a -> ()
r a
x5 seq :: forall a b. a -> b -> b
`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) where rnf :: (a1, a2, a3, a4, a5, a6, a7) -> ()
rnf = forall (p :: * -> * -> *) a b.
(NFData2 p, NFData a, NFData b) =>
p a b -> ()
rnf2
instance (NFData a1, NFData a2, NFData a3, NFData a4, NFData a5, NFData a6) =>
NFData1 ((,,,,,,) a1 a2 a3 a4 a5 a6) where liftRnf :: forall a. (a -> ()) -> (a1, a2, a3, a4, a5, a6, a) -> ()
liftRnf = forall (p :: * -> * -> *) a b.
NFData2 p =>
(a -> ()) -> (b -> ()) -> p a b -> ()
liftRnf2 forall a. NFData a => a -> ()
rnf
instance (NFData a1, NFData a2, NFData a3, NFData a4, NFData a5) =>
NFData2 ((,,,,,,) a1 a2 a3 a4 a5) where
liftRnf2 :: forall a b.
(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) = forall a. NFData a => a -> ()
rnf a1
x1 seq :: forall a b. a -> b -> b
`seq` forall a. NFData a => a -> ()
rnf a2
x2 seq :: forall a b. a -> b -> b
`seq` forall a. NFData a => a -> ()
rnf a3
x3 seq :: forall a b. a -> b -> b
`seq` forall a. NFData a => a -> ()
rnf a4
x4 seq :: forall a b. a -> b -> b
`seq` forall a. NFData a => a -> ()
rnf a5
x5 seq :: forall a b. a -> b -> b
`seq` a -> ()
r a
x6 seq :: forall a b. a -> b -> b
`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) where rnf :: (a1, a2, a3, a4, a5, a6, a7, a8) -> ()
rnf = forall (p :: * -> * -> *) a b.
(NFData2 p, NFData a, NFData b) =>
p a b -> ()
rnf2
instance (NFData a1, NFData a2, NFData a3, NFData a4, NFData a5, NFData a6, NFData a7) =>
NFData1 ((,,,,,,,) a1 a2 a3 a4 a5 a6 a7) where liftRnf :: forall a. (a -> ()) -> (a1, a2, a3, a4, a5, a6, a7, a) -> ()
liftRnf = forall (p :: * -> * -> *) a b.
NFData2 p =>
(a -> ()) -> (b -> ()) -> p a b -> ()
liftRnf2 forall a. NFData a => a -> ()
rnf
instance (NFData a1, NFData a2, NFData a3, NFData a4, NFData a5, NFData a6) =>
NFData2 ((,,,,,,,) a1 a2 a3 a4 a5 a6) where
liftRnf2 :: forall a b.
(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) = forall a. NFData a => a -> ()
rnf a1
x1 seq :: forall a b. a -> b -> b
`seq` forall a. NFData a => a -> ()
rnf a2
x2 seq :: forall a b. a -> b -> b
`seq` forall a. NFData a => a -> ()
rnf a3
x3 seq :: forall a b. a -> b -> b
`seq` forall a. NFData a => a -> ()
rnf a4
x4 seq :: forall a b. a -> b -> b
`seq` forall a. NFData a => a -> ()
rnf a5
x5 seq :: forall a b. a -> b -> b
`seq` forall a. NFData a => a -> ()
rnf a6
x6 seq :: forall a b. a -> b -> b
`seq` a -> ()
r a
x7 seq :: forall a b. a -> b -> b
`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) where rnf :: (a1, a2, a3, a4, a5, a6, a7, a8, a9) -> ()
rnf = forall (p :: * -> * -> *) a b.
(NFData2 p, NFData a, NFData b) =>
p a b -> ()
rnf2
instance (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) where liftRnf :: forall a. (a -> ()) -> (a1, a2, a3, a4, a5, a6, a7, a8, a) -> ()
liftRnf = forall (p :: * -> * -> *) a b.
NFData2 p =>
(a -> ()) -> (b -> ()) -> p a b -> ()
liftRnf2 forall a. NFData a => a -> ()
rnf
instance (NFData a1, NFData a2, NFData a3, NFData a4, NFData a5, NFData a6, NFData a7) =>
NFData2 ((,,,,,,,,) a1 a2 a3 a4 a5 a6 a7) where
liftRnf2 :: forall a b.
(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) = forall a. NFData a => a -> ()
rnf a1
x1 seq :: forall a b. a -> b -> b
`seq` forall a. NFData a => a -> ()
rnf a2
x2 seq :: forall a b. a -> b -> b
`seq` forall a. NFData a => a -> ()
rnf a3
x3 seq :: forall a b. a -> b -> b
`seq` forall a. NFData a => a -> ()
rnf a4
x4 seq :: forall a b. a -> b -> b
`seq` forall a. NFData a => a -> ()
rnf a5
x5 seq :: forall a b. a -> b -> b
`seq` forall a. NFData a => a -> ()
rnf a6
x6 seq :: forall a b. a -> b -> b
`seq` forall a. NFData a => a -> ()
rnf a7
x7 seq :: forall a b. a -> b -> b
`seq` a -> ()
r a
x8 seq :: forall a b. a -> b -> b
`seq` b -> ()
r' b
x9