-- 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 the entire data structure, -- evaluating it fully, 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
--   
-- -- Changes in version 2.0.0.0: -- -- -- -- Changes in version 2.0.1.0: -- -- @package generic-deepseq @version 2.0.1.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 rnf = grnf . from rnf :: DeepSeq a => a -> () -- | Evaluates its first argument to normal form, and then returns its -- second argument as the result. deepseq :: DeepSeq a => a -> b -> b -- | The deep analogue of $!. ($!!) :: DeepSeq a => (a -> b) -> a -> b -- | Evaluates its argument to normal form, and then return it. 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 (Complex a) instance (Integral a, DeepSeq a) => DeepSeq (Ratio a) 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 (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