-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Generic deep evaluation of data structures -- -- This package provides a deepseq function analogous to -- seq, except that it traverses data structures deeply, and not -- just up to head normal form. -- -- Using lists as an example: -- --
--   > [1,2,undefined] `seq` 3
--   3
--   
-- -- Whereas with deepseq: -- --
--   > [1,2,undefined] `deepseq` 3
--   *** Exception: Prelude.undefined
--   
-- -- Unlike the deepseq package, this implementation is based on -- the GHC.Generics framework as found in GHC >= 7.2, so that -- it can generate instances automatically for any datatype that has a -- Generic instance, without further code. -- --
--   data MyType = MyType String Int (Maybe Double)
--     deriving Generic
--   instance DeepSeq MyType
--   
@package generic-deepseq @version 1.0.0.0 -- | This module provides a deepseq function for fully evaluating -- data structures (that is, evaluating to "Normal Form", and not just up -- to "Head Normal Form" like seq does). -- -- It uses the GHC.Generics framework so that you can generate -- instances for your datatypes without having to provide an -- implementation. module Control.DeepSeq class DeepSeq a where deepseq = gdeepseq . from deepseq :: DeepSeq a => a -> b -> b -- | The deep analogue of $!. ($!!) :: DeepSeq a => (a -> b) -> a -> b rnf :: DeepSeq a => a -> () force :: DeepSeq a => a -> a instance (GDeepSeq a, GDeepSeq b) => GDeepSeq (a :+: b) instance (GDeepSeq a, GDeepSeq b) => GDeepSeq (a :*: b) instance GDeepSeq a => GDeepSeq (M1 i c a) instance DeepSeq a => GDeepSeq (K1 i a) instance GDeepSeq U1 instance GDeepSeq V1 instance (DeepSeq a, DeepSeq b) => DeepSeq (Either a b) instance DeepSeq a => DeepSeq (Maybe a) instance DeepSeq a => DeepSeq [a] instance (DeepSeq a, DeepSeq b, DeepSeq c, DeepSeq d, DeepSeq e, DeepSeq f, DeepSeq g) => DeepSeq (a, b, c, d, e, f, g) instance (DeepSeq a, DeepSeq b, DeepSeq c, DeepSeq d, DeepSeq e, DeepSeq f) => DeepSeq (a, b, c, d, e, f) instance (DeepSeq a, DeepSeq b, DeepSeq c, DeepSeq d, DeepSeq e) => DeepSeq (a, b, c, d, e) instance (DeepSeq a, DeepSeq b, DeepSeq c, DeepSeq d) => DeepSeq (a, b, c, d) instance (DeepSeq a, DeepSeq b, DeepSeq c) => DeepSeq (a, b, c) instance (DeepSeq a, DeepSeq b) => DeepSeq (a, b) instance DeepSeq Word64 instance DeepSeq Word32 instance DeepSeq Word16 instance DeepSeq Word8 instance DeepSeq Int64 instance DeepSeq Int32 instance DeepSeq Int16 instance DeepSeq Int8 instance DeepSeq () instance DeepSeq Ordering instance DeepSeq Integer instance DeepSeq Word instance DeepSeq Int instance DeepSeq Float instance DeepSeq Double instance DeepSeq Char instance DeepSeq Bool