{-# LANGUAGE CPP #-}
{-# LANGUAGE DefaultSignatures #-}
{-# LANGUAGE EmptyCase #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE PolyKinds #-}
{-# LANGUAGE QuantifiedConstraints #-}
{-# LANGUAGE Trustworthy #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TypeOperators #-}
#if __GLASGOW_HASKELL__ >= 811 && __GLASGOW_HASKELL__ < 901
{-# OPTIONS_GHC -Wno-deprecations #-}
#endif
module Control.DeepSeq (
NFData (rnf),
deepseq,
force,
($!!),
(<$!!>),
rwhnf,
Unit(..),
NFData1 (liftRnf),
rnf1,
NFData2 (liftRnf2),
rnf2,
) where
import Control.Applicative
import Control.Concurrent (MVar, ThreadId)
import Control.Exception (MaskingState (..))
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.Arr (Array)
import qualified GHC.Arr
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 Any -> Rep a Any -> ()
forall a. RnfArgs Zero a -> Rep a a -> ()
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 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
newtype Unit = Unit { Unit -> ()
runUnit :: () }
instance Semigroup Unit where
<> :: Unit -> Unit -> Unit
(<>) = Unit -> Unit -> Unit
forall a b. a -> b -> b
seq
instance Monoid Unit where
mempty :: Unit
mempty = () -> Unit
Unit ()
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)
GHC.Arr.bounds Array a b
x, Array a b -> [b]
forall i e. Array i e -> [e]
GHC.Arr.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)
GHC.Arr.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]
GHC.Arr.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)
GHC.Arr.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]
GHC.Arr.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