{-# LANGUAGE CPP #-}
{-# LANGUAGE DefaultSignatures #-}
{-# LANGUAGE EmptyCase #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE PolyKinds #-}
{-# LANGUAGE QuantifiedConstraints #-}
{-# LANGUAGE Safe #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TypeOperators #-}
#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 (MVar, ThreadId)
import Control.Exception (MaskingState (..))
import Data.Array
import Data.Complex
import Data.Fixed
import Data.Functor.Compose
import Data.Functor.Identity (Identity (..))
import qualified Data.Functor.Product as Functor
import qualified Data.Functor.Sum as Functor
import Data.IORef
import Data.Int
import Data.List.NonEmpty (NonEmpty (..))
import Data.Monoid as Mon
import Data.Ord (Down (Down))
import Data.Proxy (Proxy (Proxy))
import Data.Ratio
import Data.STRef
import Data.Semigroup as Semi
import Data.Type.Equality ((:~:), (:~~:))
import Data.Typeable (TyCon, TypeRep, rnfTyCon, rnfTypeRep)
import Data.Unique (Unique)
import Data.Version
import Data.Void (Void, absurd)
import Data.Word
import Foreign.C.Types
import Foreign.Ptr
import GHC.Fingerprint.Type (Fingerprint (..))
import GHC.Generics
import GHC.Stack.Types (CallStack (..), SrcLoc (..))
import Numeric.Natural (Natural)
import System.Exit (ExitCode (..))
import System.Mem.StableName (StableName)
import qualified Type.Reflection as Reflection
#ifdef MIN_VERSION_ghc_prim
#if MIN_VERSION_ghc_prim(0,7,0)
import GHC.Tuple (Solo (..))
#endif
#endif
#if MIN_VERSION_base(4,17,0)
import Data.Array.Byte (ByteArray(..), MutableByteArray(..))
#endif
class GNFData arity f where
  grnf :: RnfArgs arity a -> f a -> ()
instance GNFData arity V1 where
  grnf :: forall a. RnfArgs arity a -> V1 a -> ()
grnf RnfArgs arity a
_ V1 a
x = case V1 a
x of {}
data Zero
data One
data family RnfArgs arity a
data instance RnfArgs Zero a = RnfArgs0
newtype instance RnfArgs One a = RnfArgs1 (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
_ = 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 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 = RnfArgs arity a -> a a -> ()
forall a. 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 k i (c :: Meta) (f :: k -> *) (p :: k). M1 i c f p -> f p
unM1
  {-# INLINEABLE grnf #-}
instance GNFData arity (URec a) where
  grnf :: forall a. RnfArgs arity a -> URec a a -> ()
grnf RnfArgs arity a
_ = URec a a -> ()
forall a. a -> ()
rwhnf 
  
  
  {-# 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 (a a
x :*: b a
y) = RnfArgs arity a -> a a -> ()
forall a. 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 () -> () -> ()
forall a b. a -> b -> b
`seq` RnfArgs arity a -> b a -> ()
forall a. 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
  {-# 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) = RnfArgs arity a -> a a -> ()
forall a. 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 (R1 b a
x) = RnfArgs arity a -> b a -> ()
forall a. 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
  {-# INLINEABLE grnf #-}
instance GNFData One Par1 where
  grnf :: forall a. RnfArgs One a -> Par1 a -> ()
grnf (RnfArgs1 a -> ()
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
unPar1
instance NFData1 f => GNFData One (Rec1 f) where
  grnf :: forall a. RnfArgs One a -> Rec1 f a -> ()
grnf (RnfArgs1 a -> ()
r) = (a -> ()) -> f a -> ()
forall a. (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
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 = (g a -> ()) -> f (g a) -> ()
forall a. (a -> ()) -> f a -> ()
forall (f :: * -> *) a. NFData1 f => (a -> ()) -> f a -> ()
liftRnf (RnfArgs One a -> g a -> ()
forall a. 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 k1 (f :: k2 -> *) (g :: k1 -> k2) (p :: k1).
(:.:) f g p -> f (g p)
unComp1
infixr 0 $!!
infixr 0 `deepseq`
deepseq :: NFData a => a -> b -> b
deepseq :: forall a b. NFData a => a -> b -> b
deepseq a
a b
b = a -> ()
forall a. NFData a => a -> ()
rnf a
a () -> b -> b
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 a -> b -> b
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 a -> a -> a
forall a b. NFData a => a -> b -> b
`deepseq` a
x
(<$!!>) :: (Monad m, NFData b) => (a -> b) -> m a -> m b
a -> b
f <$!!> :: forall (m :: * -> *) b a.
(Monad m, NFData b) =>
(a -> b) -> m a -> m b
<$!!> m a
m = m a
m m a -> (a -> m b) -> m b
forall a b. 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 a. a -> m a
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
infixl 4 <$!!>
rwhnf :: a -> ()
rwhnf :: forall a. a -> ()
rwhnf = (a -> () -> ()
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 = RnfArgs Zero (ZonkAny 0) -> Rep a (ZonkAny 0) -> ()
forall a. RnfArgs Zero a -> Rep a a -> ()
forall arity (f :: * -> *) a.
GNFData arity f =>
RnfArgs arity a -> f a -> ()
grnf RnfArgs Zero (ZonkAny 0)
forall a. RnfArgs Zero a
RnfArgs0 (Rep a (ZonkAny 0) -> ()) -> (a -> Rep a (ZonkAny 0)) -> a -> ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. a -> Rep a (ZonkAny 0)
forall x. a -> Rep a x
forall a x. Generic a => a -> Rep a x
from
class (forall a. NFData a => NFData (f a)) => NFData1 f where
  
  
  
  
  
  liftRnf :: (a -> ()) -> f a -> ()
  default liftRnf :: (Generic1 f, GNFData One (Rep1 f)) => (a -> ()) -> f a -> ()
  liftRnf a -> ()
r = RnfArgs One a -> Rep1 f a -> ()
forall a. 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 a. f a -> Rep1 f a
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 = (a -> ()) -> f a -> ()
forall a. (a -> ()) -> f a -> ()
forall (f :: * -> *) a. NFData1 f => (a -> ()) -> f a -> ()
liftRnf a -> ()
forall a. NFData a => a -> ()
rnf
class (forall a. NFData a => NFData1 (p a)) => 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 = (a -> ()) -> (b -> ()) -> p a b -> ()
forall a b. (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
instance NFData Int where rnf :: Int -> ()
rnf = Int -> ()
forall a. a -> ()
rwhnf
instance NFData Word where rnf :: Word -> ()
rnf = Word -> ()
forall a. a -> ()
rwhnf
instance NFData Integer where rnf :: Integer -> ()
rnf = Integer -> ()
forall a. a -> ()
rwhnf
instance NFData Float where rnf :: Float -> ()
rnf = Float -> ()
forall a. a -> ()
rwhnf
instance NFData Double where rnf :: Double -> ()
rnf = Double -> ()
forall a. a -> ()
rwhnf
instance NFData Char where rnf :: Char -> ()
rnf = Char -> ()
forall a. a -> ()
rwhnf
instance NFData Bool where rnf :: Bool -> ()
rnf = Bool -> ()
forall a. a -> ()
rwhnf
instance NFData Ordering where rnf :: Ordering -> ()
rnf = Ordering -> ()
forall a. a -> ()
rwhnf
instance NFData () where rnf :: () -> ()
rnf = () -> ()
forall a. a -> ()
rwhnf
instance NFData Int8 where rnf :: Int8 -> ()
rnf = Int8 -> ()
forall a. a -> ()
rwhnf
instance NFData Int16 where rnf :: Int16 -> ()
rnf = Int16 -> ()
forall a. a -> ()
rwhnf
instance NFData Int32 where rnf :: Int32 -> ()
rnf = Int32 -> ()
forall a. a -> ()
rwhnf
instance NFData Int64 where rnf :: Int64 -> ()
rnf = Int64 -> ()
forall a. a -> ()
rwhnf
instance NFData Word8 where rnf :: Word8 -> ()
rnf = Word8 -> ()
forall a. a -> ()
rwhnf
instance NFData Word16 where rnf :: Word16 -> ()
rnf = Word16 -> ()
forall a. a -> ()
rwhnf
instance NFData Word32 where rnf :: Word32 -> ()
rnf = Word32 -> ()
forall a. a -> ()
rwhnf
instance NFData Word64 where rnf :: Word64 -> ()
rnf = Word64 -> ()
forall a. a -> ()
rwhnf
instance NFData MaskingState where rnf :: MaskingState -> ()
rnf = MaskingState -> ()
forall a. a -> ()
rwhnf
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 = (a :~: b) -> ()
forall a. a -> ()
rwhnf
instance NFData1 ((:~:) a) where liftRnf :: forall a. (a -> ()) -> (a :~: a) -> ()
liftRnf a -> ()
_ = (a :~: a) -> ()
forall a. a -> ()
rwhnf
instance NFData2 (:~:) where liftRnf2 :: forall a b. (a -> ()) -> (b -> ()) -> (a :~: b) -> ()
liftRnf2 a -> ()
_ b -> ()
_ = (a :~: b) -> ()
forall a. a -> ()
rwhnf
instance NFData (a :~~: b) where rnf :: (a :~~: b) -> ()
rnf = (a :~~: b) -> ()
forall a. a -> ()
rwhnf
instance NFData1 ((:~~:) a) where liftRnf :: forall a. (a -> ()) -> (a :~~: a) -> ()
liftRnf a -> ()
_ = (a :~~: a) -> ()
forall a. a -> ()
rwhnf
instance NFData2 (:~~:) where liftRnf2 :: forall a b. (a -> ()) -> (b -> ()) -> (a :~~: b) -> ()
liftRnf2 a -> ()
_ b -> ()
_ = (a :~~: b) -> ()
forall a. a -> ()
rwhnf
instance NFData a => NFData (Identity a) where
  rnf :: Identity a -> ()
rnf = Identity a -> ()
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 (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
instance NFData Void where
  rnf :: Void -> ()
rnf = Void -> ()
forall a. Void -> a
absurd
instance NFData Natural where rnf :: Natural -> ()
rnf = Natural -> ()
forall a. a -> ()
rwhnf
instance NFData (Fixed a) where rnf :: Fixed a -> ()
rnf = Fixed a -> ()
forall a. a -> ()
rwhnf
instance NFData1 Fixed where liftRnf :: forall a. (a -> ()) -> Fixed a -> ()
liftRnf a -> ()
_ = Fixed a -> ()
forall a. a -> ()
rwhnf
instance NFData (a -> b) where rnf :: (a -> b) -> ()
rnf = (a -> b) -> ()
forall a. a -> ()
rwhnf
instance NFData1 Ratio where
  liftRnf :: forall a. (a -> ()) -> Ratio a -> ()
liftRnf a -> ()
r Ratio a
x = a -> ()
r (Ratio a -> a
forall a. Ratio a -> a
numerator Ratio a
x) () -> () -> ()
forall a b. a -> b -> b
`seq` a -> ()
r (Ratio a -> a
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 = (g a -> ()) -> f (g a) -> ()
forall a. (a -> ()) -> f a -> ()
forall (f :: * -> *) a. NFData1 f => (a -> ()) -> f a -> ()
liftRnf ((a -> ()) -> g a -> ()
forall a. (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} {k2} (f :: k1 -> *) (g :: k2 -> k1) (a :: k2).
Compose f g a -> f (g a)
getCompose
instance (NFData (f (g a))) => NFData (Compose f g a) where
  rnf :: Compose f g a -> ()
rnf (Compose f (g a)
fga) = f (g a) -> ()
forall a. NFData a => a -> ()
rnf f (g a)
fga
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) = (a -> ()) -> f a -> ()
forall a. (a -> ()) -> f a -> ()
forall (f :: * -> *) a. NFData1 f => (a -> ()) -> f a -> ()
liftRnf a -> ()
rnf0 f a
l
  liftRnf a -> ()
rnf0 (Functor.InR g a
r) = (a -> ()) -> g a -> ()
forall a. (a -> ()) -> g a -> ()
forall (f :: * -> *) a. NFData1 f => (a -> ()) -> f a -> ()
liftRnf a -> ()
rnf0 g a
r
instance (NFData (f a), NFData (g a)) => NFData (Functor.Sum f g a) where
  rnf :: Sum f g a -> ()
rnf (Functor.InL f a
fa) = f a -> ()
forall a. NFData a => a -> ()
rnf f a
fa
  rnf (Functor.InR g a
ga) = g a -> ()
forall a. NFData a => a -> ()
rnf g a
ga
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) = (a -> ()) -> f a -> ()
forall a. (a -> ()) -> f a -> ()
forall (f :: * -> *) a. NFData1 f => (a -> ()) -> f a -> ()
liftRnf a -> ()
rnf0 f a
f () -> () -> ()
forall a b. a -> b -> b
`seq` (a -> ()) -> g a -> ()
forall a. (a -> ()) -> g a -> ()
forall (f :: * -> *) a. NFData1 f => (a -> ()) -> f a -> ()
liftRnf a -> ()
rnf0 g a
g
instance (NFData (f a), NFData (g a)) => NFData (Functor.Product f g a) where
  rnf :: Product f g a -> ()
rnf (Functor.Pair f a
fa g a
ga) = f a -> ()
forall a. NFData a => a -> ()
rnf f a
fa () -> () -> ()
forall a b. a -> b -> b
`seq` g a -> ()
forall a. NFData a => a -> ()
rnf g a
ga
instance NFData a => NFData (Ratio a) where
  rnf :: Ratio a -> ()
rnf Ratio a
x = (a, a) -> ()
forall a. NFData a => a -> ()
rnf (Ratio a -> a
forall a. Ratio a -> a
numerator Ratio a
x, Ratio a -> a
forall a. Ratio a -> a
denominator Ratio a
x)
instance (NFData a) => NFData (Complex a) where
  rnf :: Complex a -> ()
rnf (a
x :+ a
y) = a -> ()
forall a. NFData a => a -> ()
rnf a
x () -> () -> ()
forall a b. a -> b -> b
`seq` a -> ()
forall a. NFData a => a -> ()
rnf a
y () -> () -> ()
forall a b. a -> b -> b
`seq` ()
instance NFData a => NFData (Maybe a) where rnf :: Maybe a -> ()
rnf = Maybe a -> ()
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 = Either a b -> ()
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 = (a -> ()) -> (a -> ()) -> Either a a -> ()
forall a b. (a -> ()) -> (b -> ()) -> Either a b -> ()
forall (p :: * -> * -> *) a b.
NFData2 p =>
(a -> ()) -> (b -> ()) -> p a b -> ()
liftRnf2 a -> ()
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) = [Int] -> ()
forall a. NFData a => a -> ()
rnf [Int]
branch () -> () -> ()
forall a b. a -> b -> b
`seq` [String] -> ()
forall a. NFData a => a -> ()
rnf [String]
tags
instance NFData a => NFData [a] where rnf :: [a] -> ()
rnf = [a] -> ()
forall (f :: * -> *) a. (NFData1 f, NFData a) => f a -> ()
rnf1
instance NFData1 [] where
  liftRnf :: forall a. (a -> ()) -> [a] -> ()
liftRnf a -> ()
f = (a -> () -> ()) -> () -> [a] -> ()
forall a b. (a -> b -> b) -> b -> [a] -> b
forall (t :: * -> *) a b.
Foldable t =>
(a -> b -> b) -> b -> t a -> b
foldr (\a
x ()
r -> a -> ()
f a
x () -> () -> ()
forall a b. a -> b -> b
`seq` ()
r) ()
  {-# INLINABLE liftRnf #-}
instance NFData a => NFData (ZipList a) where rnf :: ZipList a -> ()
rnf = ZipList a -> ()
forall (f :: * -> *) a. (NFData1 f, NFData a) => f a -> ()
rnf1
instance NFData1 ZipList where
  liftRnf :: forall a. (a -> ()) -> ZipList a -> ()
liftRnf a -> ()
r = (a -> ()) -> [a] -> ()
forall a. (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
instance NFData a => NFData (Const a b) where
  rnf :: 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 {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 -> ()
_ = 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 {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 (a -> ()) -> (Const a b -> a) -> Const a b -> ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Const a b -> a
forall {k} a (b :: k). Const a b -> a
getConst
instance (NFData a, NFData b) => NFData (Array a b) where
  rnf :: 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)
bounds Array a b
x, Array a b -> [b]
forall i e. Array i e -> [e]
Data.Array.elems Array a b
x)
instance (NFData a) => NFData1 (Array a) where
  liftRnf :: forall a. (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)
bounds Array a a
x) () -> () -> ()
forall a b. a -> b -> b
`seq` (a -> ()) -> [a] -> ()
forall a. (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.elems Array a a
x)
instance NFData2 Array where
  liftRnf2 :: forall a b. (a -> ()) -> (b -> ()) -> Array a b -> ()
liftRnf2 a -> ()
r b -> ()
r' Array a b
x = (a -> ()) -> (a -> ()) -> (a, a) -> ()
forall a b. (a -> ()) -> (b -> ()) -> (a, b) -> ()
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)
bounds Array a b
x) () -> () -> ()
forall a b. a -> b -> b
`seq` (b -> ()) -> [b] -> ()
forall a. (a -> ()) -> [a] -> ()
forall (f :: * -> *) a. NFData1 f => (a -> ()) -> f a -> ()
liftRnf b -> ()
r' (Array a b -> [b]
forall i e. Array i e -> [e]
Data.Array.elems Array a b
x)
instance NFData a => NFData (Down a) where rnf :: Down a -> ()
rnf = Down a -> ()
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 = Dual a -> ()
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 = First a -> ()
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) = (a -> ()) -> Maybe a -> ()
forall a. (a -> ()) -> Maybe a -> ()
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 = Last a -> ()
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) = (a -> ()) -> Maybe a -> ()
forall a. (a -> ()) -> Maybe a -> ()
forall (f :: * -> *) a. NFData1 f => (a -> ()) -> f a -> ()
liftRnf a -> ()
r Maybe a
x
instance NFData Any where rnf :: 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
instance NFData All where rnf :: 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
instance NFData a => NFData (Sum a) where rnf :: Sum a -> ()
rnf = Sum a -> ()
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 = Product a -> ()
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 = StableName a -> ()
forall a. a -> ()
rwhnf 
instance NFData1 StableName where
  liftRnf :: forall a. (a -> ()) -> StableName a -> ()
liftRnf a -> ()
_ = StableName a -> ()
forall a. a -> ()
rwhnf
instance NFData ThreadId where
  rnf :: ThreadId -> ()
rnf = ThreadId -> ()
forall a. a -> ()
rwhnf 
instance NFData Unique where
  rnf :: Unique -> ()
rnf = Unique -> ()
forall a. a -> ()
rwhnf 
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
instance NFData (Reflection.TypeRep a) where
  rnf :: TypeRep a -> ()
rnf TypeRep a
tr = TypeRep a -> ()
forall k (a :: k). TypeRep a -> ()
Reflection.rnfTypeRep TypeRep a
tr
instance NFData Reflection.Module where
  rnf :: Module -> ()
rnf Module
modul = Module -> ()
Reflection.rnfModule Module
modul
instance NFData (IORef a) where
  rnf :: IORef a -> ()
rnf = IORef a -> ()
forall a. a -> ()
rwhnf
instance NFData1 IORef where
  liftRnf :: forall a. (a -> ()) -> IORef a -> ()
liftRnf a -> ()
_ = IORef a -> ()
forall a. a -> ()
rwhnf
instance NFData (STRef s a) where
  rnf :: STRef s a -> ()
rnf = STRef s a -> ()
forall a. a -> ()
rwhnf
instance NFData1 (STRef s) where
  liftRnf :: forall a. (a -> ()) -> STRef s a -> ()
liftRnf a -> ()
_ = STRef s a -> ()
forall a. a -> ()
rwhnf
instance NFData2 STRef where
  liftRnf2 :: forall a b. (a -> ()) -> (b -> ()) -> STRef a b -> ()
liftRnf2 a -> ()
_ b -> ()
_ = STRef a b -> ()
forall a. a -> ()
rwhnf
instance NFData (MVar a) where
  rnf :: MVar a -> ()
rnf = MVar a -> ()
forall a. a -> ()
rwhnf
instance NFData1 MVar where
  liftRnf :: forall a. (a -> ()) -> MVar a -> ()
liftRnf a -> ()
_ = MVar a -> ()
forall a. a -> ()
rwhnf
instance NFData Fingerprint where
  rnf :: Fingerprint -> ()
rnf (Fingerprint Word64
_ Word64
_) = ()
instance NFData (Ptr a) where
  rnf :: Ptr a -> ()
rnf = Ptr a -> ()
forall a. a -> ()
rwhnf
instance NFData1 Ptr where
  liftRnf :: forall a. (a -> ()) -> Ptr a -> ()
liftRnf a -> ()
_ = Ptr a -> ()
forall a. a -> ()
rwhnf
instance NFData (FunPtr a) where
  rnf :: FunPtr a -> ()
rnf = FunPtr a -> ()
forall a. a -> ()
rwhnf
instance NFData1 FunPtr where
  liftRnf :: forall a. (a -> ()) -> FunPtr a -> ()
liftRnf a -> ()
_ = FunPtr a -> ()
forall a. a -> ()
rwhnf
instance NFData CChar where rnf :: CChar -> ()
rnf = CChar -> ()
forall a. a -> ()
rwhnf
instance NFData CSChar where rnf :: CSChar -> ()
rnf = CSChar -> ()
forall a. a -> ()
rwhnf
instance NFData CUChar where rnf :: CUChar -> ()
rnf = CUChar -> ()
forall a. a -> ()
rwhnf
instance NFData CShort where rnf :: CShort -> ()
rnf = CShort -> ()
forall a. a -> ()
rwhnf
instance NFData CUShort where rnf :: CUShort -> ()
rnf = CUShort -> ()
forall a. a -> ()
rwhnf
instance NFData CInt where rnf :: CInt -> ()
rnf = CInt -> ()
forall a. a -> ()
rwhnf
instance NFData CUInt where rnf :: CUInt -> ()
rnf = CUInt -> ()
forall a. a -> ()
rwhnf
instance NFData CLong where rnf :: CLong -> ()
rnf = CLong -> ()
forall a. a -> ()
rwhnf
instance NFData CULong where rnf :: CULong -> ()
rnf = CULong -> ()
forall a. a -> ()
rwhnf
instance NFData CPtrdiff where rnf :: CPtrdiff -> ()
rnf = CPtrdiff -> ()
forall a. a -> ()
rwhnf
instance NFData CSize where rnf :: CSize -> ()
rnf = CSize -> ()
forall a. a -> ()
rwhnf
instance NFData CWchar where rnf :: CWchar -> ()
rnf = CWchar -> ()
forall a. a -> ()
rwhnf
instance NFData CSigAtomic where rnf :: CSigAtomic -> ()
rnf = CSigAtomic -> ()
forall a. a -> ()
rwhnf
instance NFData CLLong where rnf :: CLLong -> ()
rnf = CLLong -> ()
forall a. a -> ()
rwhnf
instance NFData CULLong where rnf :: CULLong -> ()
rnf = CULLong -> ()
forall a. a -> ()
rwhnf
instance NFData CIntPtr where rnf :: CIntPtr -> ()
rnf = CIntPtr -> ()
forall a. a -> ()
rwhnf
instance NFData CUIntPtr where rnf :: CUIntPtr -> ()
rnf = CUIntPtr -> ()
forall a. a -> ()
rwhnf
instance NFData CIntMax where rnf :: CIntMax -> ()
rnf = CIntMax -> ()
forall a. a -> ()
rwhnf
instance NFData CUIntMax where rnf :: CUIntMax -> ()
rnf = CUIntMax -> ()
forall a. a -> ()
rwhnf
instance NFData CClock where rnf :: CClock -> ()
rnf = CClock -> ()
forall a. a -> ()
rwhnf
instance NFData CTime where rnf :: CTime -> ()
rnf = CTime -> ()
forall a. a -> ()
rwhnf
instance NFData CUSeconds where rnf :: CUSeconds -> ()
rnf = CUSeconds -> ()
forall a. a -> ()
rwhnf
instance NFData CSUSeconds where rnf :: CSUSeconds -> ()
rnf = CSUSeconds -> ()
forall a. a -> ()
rwhnf
instance NFData CFloat where rnf :: CFloat -> ()
rnf = CFloat -> ()
forall a. a -> ()
rwhnf
instance NFData CDouble where rnf :: CDouble -> ()
rnf = CDouble -> ()
forall a. a -> ()
rwhnf
instance NFData CFile where rnf :: CFile -> ()
rnf = CFile -> ()
forall a. a -> ()
rwhnf
instance NFData CFpos where rnf :: CFpos -> ()
rnf = CFpos -> ()
forall a. a -> ()
rwhnf
instance NFData CJmpBuf where rnf :: CJmpBuf -> ()
rnf = CJmpBuf -> ()
forall a. a -> ()
rwhnf
instance NFData CBool where rnf :: CBool -> ()
rnf = CBool -> ()
forall a. a -> ()
rwhnf
instance NFData ExitCode where
  rnf :: ExitCode -> ()
rnf (ExitFailure Int
n) = Int -> ()
forall a. NFData a => a -> ()
rnf Int
n
  rnf ExitCode
ExitSuccess = ()
instance NFData a => NFData (NonEmpty a) where rnf :: NonEmpty a -> ()
rnf = NonEmpty a -> ()
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 () -> () -> ()
forall a b. a -> b -> b
`seq` (a -> ()) -> [a] -> ()
forall a. (a -> ()) -> [a] -> ()
forall (f :: * -> *) a. NFData1 f => (a -> ()) -> f a -> ()
liftRnf a -> ()
r [a]
xs
instance NFData a => NFData (Min a) where rnf :: Min a -> ()
rnf = Min a -> ()
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 = Max a -> ()
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 = Arg a b -> ()
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 = (a -> ()) -> (a -> ()) -> Arg a a -> ()
forall a b. (a -> ()) -> (b -> ()) -> Arg a b -> ()
forall (p :: * -> * -> *) a b.
NFData2 p =>
(a -> ()) -> (b -> ()) -> p a b -> ()
liftRnf2 a -> ()
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 () -> () -> ()
forall a b. a -> b -> b
`seq` b -> ()
r' b
b () -> () -> ()
forall a b. a -> b -> b
`seq` ()
instance NFData a => NFData (Semi.First a) where rnf :: First a -> ()
rnf = First a -> ()
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 = Last a -> ()
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 = WrappedMonoid m -> ()
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
instance NFData SrcLoc where
  rnf :: SrcLoc -> ()
rnf (SrcLoc String
a String
b String
c Int
d Int
e Int
f Int
g) =
    String -> ()
forall a. NFData a => a -> ()
rnf String
a () -> () -> ()
forall a b. a -> b -> b
`seq` String -> ()
forall a. NFData a => a -> ()
rnf String
b () -> () -> ()
forall a b. a -> b -> b
`seq` String -> ()
forall a. NFData a => a -> ()
rnf String
c () -> () -> ()
forall a b. a -> b -> b
`seq` Int -> ()
forall a. NFData a => a -> ()
rnf Int
d () -> () -> ()
forall a b. a -> b -> b
`seq` Int -> ()
forall a. NFData a => a -> ()
rnf Int
e () -> () -> ()
forall a b. a -> b -> b
`seq` Int -> ()
forall a. NFData a => a -> ()
rnf Int
f () -> () -> ()
forall a b. a -> b -> b
`seq` Int -> ()
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) = String -> ()
forall a. NFData a => a -> ()
rnf String
a () -> () -> ()
forall a b. a -> b -> b
`seq` SrcLoc -> ()
forall a. NFData a => a -> ()
rnf SrcLoc
b () -> () -> ()
forall a b. a -> b -> b
`seq` CallStack -> ()
forall a. NFData a => a -> ()
rnf CallStack
c
  rnf (FreezeCallStack CallStack
a) = CallStack -> ()
forall a. NFData a => a -> ()
rnf CallStack
a
#ifdef MIN_VERSION_ghc_prim
#if MIN_VERSION_ghc_prim(0,7,0)
instance NFData a => NFData (Solo a) where
#if MIN_VERSION_ghc_prim(0,10,0)
  rnf :: Solo a -> ()
rnf (MkSolo a
a) = a -> ()
forall a. NFData a => a -> ()
rnf a
a
#else
  rnf (Solo a) = rnf a
#endif
instance NFData1 Solo where
#if MIN_VERSION_ghc_prim(0,10,0)
  liftRnf :: forall a. (a -> ()) -> Solo a -> ()
liftRnf a -> ()
r (MkSolo a
a) = a -> ()
r a
a
#else
  liftRnf r (Solo a) = r a
#endif
#endif
#endif
instance (NFData a, NFData b) => NFData (a, b) where rnf :: (a, b) -> ()
rnf = (a, b) -> ()
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 = (a -> ()) -> (a -> ()) -> (a, a) -> ()
forall a b. (a -> ()) -> (b -> ()) -> (a, b) -> ()
forall (p :: * -> * -> *) a b.
NFData2 p =>
(a -> ()) -> (b -> ()) -> p a b -> ()
liftRnf2 a -> ()
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 () -> () -> ()
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 = (a1, a2, a3) -> ()
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 = (a2 -> ()) -> (a -> ()) -> (a1, a2, a) -> ()
forall a b. (a -> ()) -> (b -> ()) -> (a1, a, b) -> ()
forall (p :: * -> * -> *) a b.
NFData2 p =>
(a -> ()) -> (b -> ()) -> p a b -> ()
liftRnf2 a2 -> ()
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) =
    a1 -> ()
forall a. NFData a => a -> ()
rnf a1
x1 () -> () -> ()
forall a b. a -> b -> b
`seq` a -> ()
r a
x2 () -> () -> ()
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 = (a1, a2, a3, a4) -> ()
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 = (a3 -> ()) -> (a -> ()) -> (a1, a2, a3, a) -> ()
forall a b. (a -> ()) -> (b -> ()) -> (a1, a2, a, b) -> ()
forall (p :: * -> * -> *) a b.
NFData2 p =>
(a -> ()) -> (b -> ()) -> p a b -> ()
liftRnf2 a3 -> ()
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) =
    a1 -> ()
forall a. NFData a => a -> ()
rnf a1
x1 () -> () -> ()
forall a b. a -> b -> b
`seq` a2 -> ()
forall a. NFData a => a -> ()
rnf a2
x2 () -> () -> ()
forall a b. a -> b -> b
`seq` a -> ()
r a
x3 () -> () -> ()
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 = (a1, a2, a3, a4, a5) -> ()
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 = (a4 -> ()) -> (a -> ()) -> (a1, a2, a3, a4, a) -> ()
forall a b. (a -> ()) -> (b -> ()) -> (a1, a2, a3, a, b) -> ()
forall (p :: * -> * -> *) a b.
NFData2 p =>
(a -> ()) -> (b -> ()) -> p a b -> ()
liftRnf2 a4 -> ()
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) =
    a1 -> ()
forall a. NFData a => a -> ()
rnf a1
x1 () -> () -> ()
forall a b. a -> b -> b
`seq` a2 -> ()
forall a. NFData a => a -> ()
rnf a2
x2 () -> () -> ()
forall a b. a -> b -> b
`seq` a3 -> ()
forall a. NFData a => a -> ()
rnf a3
x3 () -> () -> ()
forall a b. a -> b -> b
`seq` a -> ()
r a
x4 () -> () -> ()
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 = (a1, a2, a3, a4, a5, a6) -> ()
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 = (a5 -> ()) -> (a -> ()) -> (a1, a2, a3, a4, a5, a) -> ()
forall a b. (a -> ()) -> (b -> ()) -> (a1, a2, a3, a4, a, b) -> ()
forall (p :: * -> * -> *) a b.
NFData2 p =>
(a -> ()) -> (b -> ()) -> p a b -> ()
liftRnf2 a5 -> ()
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) =
    a1 -> ()
forall a. NFData a => a -> ()
rnf a1
x1 () -> () -> ()
forall a b. a -> b -> b
`seq` a2 -> ()
forall a. NFData a => a -> ()
rnf a2
x2 () -> () -> ()
forall a b. a -> b -> b
`seq` a3 -> ()
forall a. NFData a => a -> ()
rnf a3
x3 () -> () -> ()
forall a b. a -> b -> b
`seq` a4 -> ()
forall a. NFData a => a -> ()
rnf a4
x4 () -> () -> ()
forall a b. a -> b -> b
`seq` a -> ()
r a
x5 () -> () -> ()
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 = (a1, a2, a3, a4, a5, a6, a7) -> ()
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 = (a6 -> ()) -> (a -> ()) -> (a1, a2, a3, a4, a5, a6, a) -> ()
forall a b.
(a -> ()) -> (b -> ()) -> (a1, a2, a3, a4, a5, a, b) -> ()
forall (p :: * -> * -> *) a b.
NFData2 p =>
(a -> ()) -> (b -> ()) -> p a b -> ()
liftRnf2 a6 -> ()
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) =
    a1 -> ()
forall a. NFData a => a -> ()
rnf a1
x1 () -> () -> ()
forall a b. a -> b -> b
`seq` a2 -> ()
forall a. NFData a => a -> ()
rnf a2
x2 () -> () -> ()
forall a b. a -> b -> b
`seq` a3 -> ()
forall a. NFData a => a -> ()
rnf a3
x3 () -> () -> ()
forall a b. a -> b -> b
`seq` a4 -> ()
forall a. NFData a => a -> ()
rnf a4
x4 () -> () -> ()
forall a b. a -> b -> b
`seq` a5 -> ()
forall a. NFData a => a -> ()
rnf a5
x5 () -> () -> ()
forall a b. a -> b -> b
`seq` a -> ()
r a
x6 () -> () -> ()
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 = (a1, a2, a3, a4, a5, a6, a7, a8) -> ()
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 = (a7 -> ()) -> (a -> ()) -> (a1, a2, a3, a4, a5, a6, a7, a) -> ()
forall a b.
(a -> ()) -> (b -> ()) -> (a1, a2, a3, a4, a5, a6, a, b) -> ()
forall (p :: * -> * -> *) a b.
NFData2 p =>
(a -> ()) -> (b -> ()) -> p a b -> ()
liftRnf2 a7 -> ()
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) =
    a1 -> ()
forall a. NFData a => a -> ()
rnf a1
x1 () -> () -> ()
forall a b. a -> b -> b
`seq` a2 -> ()
forall a. NFData a => a -> ()
rnf a2
x2 () -> () -> ()
forall a b. a -> b -> b
`seq` a3 -> ()
forall a. NFData a => a -> ()
rnf a3
x3 () -> () -> ()
forall a b. a -> b -> b
`seq` a4 -> ()
forall a. NFData a => a -> ()
rnf a4
x4 () -> () -> ()
forall a b. a -> b -> b
`seq` a5 -> ()
forall a. NFData a => a -> ()
rnf a5
x5 () -> () -> ()
forall a b. a -> b -> b
`seq` a6 -> ()
forall a. NFData a => a -> ()
rnf a6
x6 () -> () -> ()
forall a b. a -> b -> b
`seq` a -> ()
r a
x7 () -> () -> ()
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 = (a1, a2, a3, a4, a5, a6, a7, a8, a9) -> ()
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 = (a8 -> ())
-> (a -> ()) -> (a1, a2, a3, a4, a5, a6, a7, a8, a) -> ()
forall a b.
(a -> ()) -> (b -> ()) -> (a1, a2, a3, a4, a5, a6, a7, a, b) -> ()
forall (p :: * -> * -> *) a b.
NFData2 p =>
(a -> ()) -> (b -> ()) -> p a b -> ()
liftRnf2 a8 -> ()
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) =
    a1 -> ()
forall a. NFData a => a -> ()
rnf a1
x1 () -> () -> ()
forall a b. a -> b -> b
`seq` a2 -> ()
forall a. NFData a => a -> ()
rnf a2
x2 () -> () -> ()
forall a b. a -> b -> b
`seq` a3 -> ()
forall a. NFData a => a -> ()
rnf a3
x3 () -> () -> ()
forall a b. a -> b -> b
`seq` a4 -> ()
forall a. NFData a => a -> ()
rnf a4
x4 () -> () -> ()
forall a b. a -> b -> b
`seq` a5 -> ()
forall a. NFData a => a -> ()
rnf a5
x5 () -> () -> ()
forall a b. a -> b -> b
`seq` a6 -> ()
forall a. NFData a => a -> ()
rnf a6
x6 () -> () -> ()
forall a b. a -> b -> b
`seq` a7 -> ()
forall a. NFData a => a -> ()
rnf a7
x7 () -> () -> ()
forall a b. a -> b -> b
`seq` a -> ()
r a
x8 () -> () -> ()
forall a b. a -> b -> b
`seq` b -> ()
r' b
x9
#if MIN_VERSION_base(4,17,0)
instance NFData ByteArray where
  rnf :: ByteArray -> ()
rnf (ByteArray ByteArray#
_) = ()
instance NFData (MutableByteArray s) where
  rnf :: MutableByteArray s -> ()
rnf (MutableByteArray MutableByteArray# s
_) = ()
#endif