{-# LANGUAGE TypeApplications #-}
module Data.Record.Generic.NFData (
grnf
) where
import Control.DeepSeq (NFData, rnf)
import Data.Record.Generic
import qualified Data.Record.Generic.Rep as Rep
grnf :: (Generic a, Constraints a NFData) => a -> ()
grnf :: forall a. (Generic a, Constraints a NFData) => a -> ()
grnf =
[()] -> ()
forall a. NFData a => a -> ()
rnf
([()] -> ()) -> (a -> [()]) -> a -> ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Rep (K ()) a -> [()]
forall a b. Rep (K a) b -> [a]
Rep.collapse
(Rep (K ()) a -> [()]) -> (a -> Rep (K ()) a) -> a -> [()]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Proxy NFData
-> (forall x. NFData x => I x -> K () x) -> Rep I a -> Rep (K ()) a
forall a (c :: * -> Constraint) (f :: * -> *) (g :: * -> *).
(Generic a, Constraints a c) =>
Proxy c -> (forall x. c x => f x -> g x) -> Rep f a -> Rep g a
Rep.cmap (forall {k} (t :: k). Proxy t
forall (t :: * -> Constraint). Proxy t
Proxy @NFData) ((x -> ()) -> I x -> K () x
forall {k} a b (c :: k). (a -> b) -> I a -> K b c
mapIK x -> ()
forall a. NFData a => a -> ()
rnf)
(Rep I a -> Rep (K ()) a) -> (a -> Rep I a) -> a -> Rep (K ()) a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. a -> Rep I a
forall a. Generic a => a -> Rep I a
from