packages feed

deepseq 1.0.0.0 → 1.1.0.0

raw patch · 2 files changed

+139/−132 lines, 2 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

- Control.DeepSeq: class DeepSeq a
- Control.DeepSeq: class (DeepSeq a, Integral a) => DeepSeqIntegral a
- Control.DeepSeq: class (DeepSeq a, Ord a) => DeepSeqOrd a
- Control.DeepSeq: instance (DeepSeq a) => DeepSeq (IntMap a)
- Control.DeepSeq: instance (DeepSeq a) => DeepSeq (Maybe a)
- Control.DeepSeq: instance (DeepSeq a) => DeepSeq (Set a)
- Control.DeepSeq: instance (DeepSeq a) => DeepSeq (Tree a)
- Control.DeepSeq: instance (DeepSeq a) => DeepSeq [a]
- Control.DeepSeq: instance (DeepSeq a, DeepSeq b) => DeepSeq (Either a b)
- Control.DeepSeq: instance (DeepSeq a, DeepSeq b) => DeepSeq (a, b)
- Control.DeepSeq: instance (DeepSeq a, DeepSeq b, DeepSeq c) => DeepSeq (a, b, c)
- Control.DeepSeq: instance (DeepSeq a, DeepSeq b, DeepSeq c, DeepSeq d) => DeepSeq (a, b, c, d)
- Control.DeepSeq: instance (DeepSeq a1, DeepSeq a2, DeepSeq a3, DeepSeq a4, DeepSeq a5) => DeepSeq (a1, a2, a3, a4, a5)
- Control.DeepSeq: instance (DeepSeq a1, DeepSeq a2, DeepSeq a3, DeepSeq a4, DeepSeq a5, DeepSeq a6) => DeepSeq (a1, a2, a3, a4, a5, a6)
- Control.DeepSeq: instance (DeepSeq a1, DeepSeq a2, DeepSeq a3, DeepSeq a4, DeepSeq a5, DeepSeq a6, DeepSeq a7) => DeepSeq (a1, a2, a3, a4, a5, a6, a7)
- Control.DeepSeq: instance (DeepSeq a1, DeepSeq a2, DeepSeq a3, DeepSeq a4, DeepSeq a5, DeepSeq a6, DeepSeq a7, DeepSeq a8) => DeepSeq (a1, a2, a3, a4, a5, a6, a7, a8)
- Control.DeepSeq: instance (DeepSeq a1, DeepSeq a2, DeepSeq a3, DeepSeq a4, DeepSeq a5, DeepSeq a6, DeepSeq a7, DeepSeq a8, DeepSeq a9) => DeepSeq (a1, a2, a3, a4, a5, a6, a7, a8, a9)
- Control.DeepSeq: instance (DeepSeq k, DeepSeq a) => DeepSeq (Map k a)
- Control.DeepSeq: instance (Integral a, DeepSeq a) => DeepSeq (Ratio a)
- Control.DeepSeq: instance (Ix a, DeepSeq a, DeepSeq b) => DeepSeq (Array a b)
- Control.DeepSeq: instance (RealFloat a, DeepSeq a) => DeepSeq (Complex a)
- Control.DeepSeq: instance DeepSeq ()
- Control.DeepSeq: instance DeepSeq Bool
- Control.DeepSeq: instance DeepSeq Char
- Control.DeepSeq: instance DeepSeq Double
- Control.DeepSeq: instance DeepSeq Float
- Control.DeepSeq: instance DeepSeq Int
- Control.DeepSeq: instance DeepSeq Int16
- Control.DeepSeq: instance DeepSeq Int32
- Control.DeepSeq: instance DeepSeq Int64
- Control.DeepSeq: instance DeepSeq Int8
- Control.DeepSeq: instance DeepSeq IntSet
- Control.DeepSeq: instance DeepSeq Integer
- Control.DeepSeq: instance DeepSeq Word
- Control.DeepSeq: instance DeepSeq Word16
- Control.DeepSeq: instance DeepSeq Word32
- Control.DeepSeq: instance DeepSeq Word64
- Control.DeepSeq: instance DeepSeq Word8
- Control.DeepSeq: instance DeepSeqIntegral Int
- Control.DeepSeq: instance DeepSeqOrd Int
+ Control.DeepSeq: class NFData a
+ Control.DeepSeq: instance (Integral a, NFData a) => NFData (Ratio a)
+ Control.DeepSeq: instance (Ix a, NFData a, NFData b) => NFData (Array a b)
+ Control.DeepSeq: instance (NFData a, NFData b) => NFData (Either a b)
+ Control.DeepSeq: instance (NFData a, NFData b) => NFData (a, b)
+ Control.DeepSeq: instance (NFData a, NFData b, NFData c) => NFData (a, b, c)
+ Control.DeepSeq: instance (NFData a, NFData b, NFData c, NFData d) => NFData (a, b, c, d)
+ Control.DeepSeq: instance (NFData a1, NFData a2, NFData a3, NFData a4, NFData a5) => NFData (a1, a2, a3, a4, a5)
+ Control.DeepSeq: instance (NFData a1, NFData a2, NFData a3, NFData a4, NFData a5, NFData a6) => NFData (a1, a2, a3, a4, a5, a6)
+ Control.DeepSeq: instance (NFData a1, NFData a2, NFData a3, NFData a4, NFData a5, NFData a6, NFData a7) => NFData (a1, a2, a3, a4, a5, a6, a7)
+ Control.DeepSeq: 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)
+ Control.DeepSeq: 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)
+ Control.DeepSeq: instance (NFData k, NFData a) => NFData (Map k a)
+ Control.DeepSeq: instance (RealFloat a, NFData a) => NFData (Complex a)
+ Control.DeepSeq: instance NFData ()
+ Control.DeepSeq: instance NFData Bool
+ Control.DeepSeq: instance NFData Char
+ Control.DeepSeq: instance NFData Double
+ Control.DeepSeq: instance NFData Float
+ Control.DeepSeq: instance NFData Int
+ Control.DeepSeq: instance NFData Int16
+ Control.DeepSeq: instance NFData Int32
+ Control.DeepSeq: instance NFData Int64
+ Control.DeepSeq: instance NFData Int8
+ Control.DeepSeq: instance NFData IntSet
+ Control.DeepSeq: instance NFData Integer
+ Control.DeepSeq: instance NFData Word
+ Control.DeepSeq: instance NFData Word16
+ Control.DeepSeq: instance NFData Word32
+ Control.DeepSeq: instance NFData Word64
+ Control.DeepSeq: instance NFData Word8
+ Control.DeepSeq: instance NFData a => NFData (IntMap a)
+ Control.DeepSeq: instance NFData a => NFData (Maybe a)
+ Control.DeepSeq: instance NFData a => NFData (Set a)
+ Control.DeepSeq: instance NFData a => NFData (Tree a)
+ Control.DeepSeq: instance NFData a => NFData [a]
+ Control.DeepSeq: rnf :: NFData a => a -> ()
- Control.DeepSeq: deepseq :: (DeepSeq a) => a -> ()
+ Control.DeepSeq: deepseq :: NFData a => a -> b -> b

Files

Control/DeepSeq.hs view
@@ -13,7 +13,8 @@ --   module Control.DeepSeq (-     DeepSeq(..), DeepSeqIntegral, DeepSeqOrd+     deepseq,+     NFData(..),   ) where  import Data.Int@@ -27,161 +28,163 @@ import Data.Tree import Data.Array +-- | Fully evaluates its argument.  The name 'deepseq' is used to+-- illustrate the relationship to 'seq': where 'seq' is shallow in+-- the sense that it only evaluates the top level of its argument,+-- 'deepseq' traverses the entire data structure evaluating it+-- completely.+--+-- 'deepseq' can be useful for forcing pending exceptions,+-- eradicating space leaks, or forcing lazy I/O to happen.  It is+-- also useful in conjunction with parallel Strategies (see the+-- @parallel@ package).+--+-- There is no guarantee about the ordering of evaluation.  The+-- implementation may evaluate the components of the structure in+-- any order or in parallel.  To impose an actual order on+-- evaluation, use 'pseq' from "Control.Parallel" in the+-- @parallel@ package.+--+deepseq :: NFData a => a -> b -> b+deepseq a b = rnf a `seq` b+ -- A class of types that can be fully evaluated.-class DeepSeq a where-    -- | Fully evaluates its argument.  The name 'deepseq' is used to-    -- illustrate the relationship to 'seq': where 'seq' is shallow in-    -- the sense that it only evaluates the top level of its argument,-    -- 'deepseq' traverses the entire data structure evaluating it-    -- completely.-    ---    -- 'deepseq' can be useful for forcing pending exceptions,-    -- eradicating space leaks, or forcing lazy I/O to happen.  It is-    -- also useful in conjunction with parallel Strategies (see the-    -- @parallel@ package).-    ---    -- There is no guarantee about the ordering of evaluation.  The-    -- implementation may evaluate the components of the structure in-    -- any order or in parallel.  To impose an actual order on-    -- evaluation, use 'pseq' from "Control.Parallel" in the-    -- @parallel@ package.+class NFData a where+    -- | rnf should reduce its argument to normal form (that is, fully+    -- evaluate all sub-components), and then return '()'.+    -- +    -- The default implementation of 'rnf' is      ---    -- The default implementation of 'deepseq' is simply 'seq', which-    -- may be convenient when defining instances for data types with+    -- > rnf a = a `seq` ()+    -- +    -- which may be convenient when defining instances for data types with     -- no unevaluated fields (e.g. enumerations).-    ---    deepseq :: a -> ()-    deepseq a = a `seq` ()--class (DeepSeq a, Integral a) => DeepSeqIntegral a-class (DeepSeq a, Ord a) => DeepSeqOrd a--instance DeepSeq Int -instance DeepSeq Word-instance DeepSeq Integer-instance DeepSeq Float-instance DeepSeq Double+    rnf :: a -> ()+    rnf a = a `seq` () -instance DeepSeq Char-instance DeepSeq Bool-instance DeepSeq ()+instance NFData Int +instance NFData Word+instance NFData Integer+instance NFData Float+instance NFData Double -instance DeepSeq Int8-instance DeepSeq Int16-instance DeepSeq Int32-instance DeepSeq Int64+instance NFData Char+instance NFData Bool+instance NFData () -instance DeepSeq Word8-instance DeepSeq Word16-instance DeepSeq Word32-instance DeepSeq Word64+instance NFData Int8+instance NFData Int16+instance NFData Int32+instance NFData Int64 -instance DeepSeqIntegral Int-instance DeepSeqOrd Int+instance NFData Word8+instance NFData Word16+instance NFData Word32+instance NFData Word64  --Rational and complex numbers. -instance (Integral a, DeepSeq a) => DeepSeq (Ratio a) where-  deepseq x = deepseq (numerator x, denominator x)+instance (Integral a, NFData a) => NFData (Ratio a) where+  rnf x = rnf (numerator x, denominator x) -instance (RealFloat a, DeepSeq a) => DeepSeq (Complex a) where-  deepseq (x:+y) = deepseq x `seq` -	         deepseq y `seq`+instance (RealFloat a, NFData a) => NFData (Complex a) where+  rnf (x:+y) = rnf x `seq` +               rnf y `seq`                () -instance DeepSeq a => DeepSeq (Maybe a) where-    deepseq Nothing  = ()-    deepseq (Just x) = deepseq x+instance NFData a => NFData (Maybe a) where+    rnf Nothing  = ()+    rnf (Just x) = rnf x -instance (DeepSeq a, DeepSeq b) => DeepSeq (Either a b) where-    deepseq (Left x)  = deepseq x-    deepseq (Right y) = deepseq y+instance (NFData a, NFData b) => NFData (Either a b) where+    rnf (Left x)  = rnf x+    rnf (Right y) = rnf y -instance (DeepSeq k, DeepSeq a) => DeepSeq (Data.Map.Map k a) where-    deepseq = deepseq . Data.Map.toList+instance (NFData k, NFData a) => NFData (Data.Map.Map k a) where+    rnf = rnf . Data.Map.toList -instance DeepSeq a => DeepSeq (Data.Set.Set a) where-    deepseq = deepseq . Data.Set.toList+instance NFData a => NFData (Data.Set.Set a) where+    rnf = rnf . Data.Set.toList -instance DeepSeq a => DeepSeq (Data.Tree.Tree a) where-    deepseq (Data.Tree.Node r f) = deepseq r `seq` deepseq f+instance NFData a => NFData (Data.Tree.Tree a) where+    rnf (Data.Tree.Node r f) = rnf r `seq` rnf f -instance DeepSeq a => DeepSeq (Data.IntMap.IntMap a) where-    deepseq = deepseq . Data.IntMap.toList+instance NFData a => NFData (Data.IntMap.IntMap a) where+    rnf = rnf . Data.IntMap.toList -instance DeepSeq Data.IntSet.IntSet where-    deepseq = deepseq . Data.IntSet.toList+instance NFData Data.IntSet.IntSet where+    rnf = rnf . Data.IntSet.toList -instance DeepSeq a => DeepSeq [a] where-    deepseq [] = ()-    deepseq (x:xs) = deepseq x `seq` deepseq xs+instance NFData a => NFData [a] where+    rnf [] = ()+    rnf (x:xs) = rnf x `seq` rnf xs -instance (Ix a, DeepSeq a, DeepSeq b) => DeepSeq (Array a b) where-    deepseq x = deepseq (bounds x, Data.Array.elems x)+instance (Ix a, NFData a, NFData b) => NFData (Array a b) where+    rnf x = rnf (bounds x, Data.Array.elems x) -instance (DeepSeq a, DeepSeq b) => DeepSeq (a,b) where-  deepseq (x,y) = deepseq x `seq` deepseq y+instance (NFData a, NFData b) => NFData (a,b) where+  rnf (x,y) = rnf x `seq` rnf y -instance (DeepSeq a, DeepSeq b, DeepSeq c) => DeepSeq (a,b,c) where-  deepseq (x,y,z) = deepseq x `seq` deepseq y `seq` deepseq z +instance (NFData a, NFData b, NFData c) => NFData (a,b,c) where+  rnf (x,y,z) = rnf x `seq` rnf y `seq` rnf z  -instance (DeepSeq a, DeepSeq b, DeepSeq c, DeepSeq d) => DeepSeq (a,b,c,d) where-  deepseq (x1,x2,x3,x4) = deepseq x1 `seq` -		        deepseq x2 `seq` -		        deepseq x3 `seq` -		        deepseq x4 +instance (NFData a, NFData b, NFData c, NFData d) => NFData (a,b,c,d) where+  rnf (x1,x2,x3,x4) = rnf x1 `seq` +		        rnf x2 `seq` +		        rnf x3 `seq` +		        rnf x4  -instance (DeepSeq a1, DeepSeq a2, DeepSeq a3, DeepSeq a4, DeepSeq a5) => -         DeepSeq (a1, a2, a3, a4, a5) where-  deepseq (x1, x2, x3, x4, x5) =-                  deepseq x1 `seq`-                  deepseq x2 `seq`-                  deepseq x3 `seq`-                  deepseq x4 `seq`-                  deepseq x5+instance (NFData a1, NFData a2, NFData a3, NFData a4, NFData a5) => +         NFData (a1, a2, a3, a4, a5) where+  rnf (x1, x2, x3, x4, x5) =+                  rnf x1 `seq`+                  rnf x2 `seq`+                  rnf x3 `seq`+                  rnf x4 `seq`+                  rnf x5 -instance (DeepSeq a1, DeepSeq a2, DeepSeq a3, DeepSeq a4, DeepSeq a5, DeepSeq a6) => -         DeepSeq (a1, a2, a3, a4, a5, a6) where-  deepseq (x1, x2, x3, x4, x5, x6) =-                  deepseq x1 `seq`-                  deepseq x2 `seq`-                  deepseq x3 `seq`-                  deepseq x4 `seq`-                  deepseq x5 `seq`-                  deepseq x6+instance (NFData a1, NFData a2, NFData a3, NFData a4, NFData a5, NFData a6) => +         NFData (a1, a2, a3, a4, a5, a6) where+  rnf (x1, x2, x3, x4, x5, x6) =+                  rnf x1 `seq`+                  rnf x2 `seq`+                  rnf x3 `seq`+                  rnf x4 `seq`+                  rnf x5 `seq`+                  rnf x6 -instance (DeepSeq a1, DeepSeq a2, DeepSeq a3, DeepSeq a4, DeepSeq a5, DeepSeq a6, DeepSeq a7) => -         DeepSeq (a1, a2, a3, a4, a5, a6, a7) where-  deepseq (x1, x2, x3, x4, x5, x6, x7) =-                  deepseq x1 `seq`-                  deepseq x2 `seq`-                  deepseq x3 `seq`-                  deepseq x4 `seq`-                  deepseq x5 `seq`-                  deepseq x6 `seq`-                  deepseq x7+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 (x1, x2, x3, x4, x5, x6, x7) =+                  rnf x1 `seq`+                  rnf x2 `seq`+                  rnf x3 `seq`+                  rnf x4 `seq`+                  rnf x5 `seq`+                  rnf x6 `seq`+                  rnf x7 -instance (DeepSeq a1, DeepSeq a2, DeepSeq a3, DeepSeq a4, DeepSeq a5, DeepSeq a6, DeepSeq a7, DeepSeq a8) => -         DeepSeq (a1, a2, a3, a4, a5, a6, a7, a8) where-  deepseq (x1, x2, x3, x4, x5, x6, x7, x8) =-                  deepseq x1 `seq`-                  deepseq x2 `seq`-                  deepseq x3 `seq`-                  deepseq x4 `seq`-                  deepseq x5 `seq`-                  deepseq x6 `seq`-                  deepseq x7 `seq`-                  deepseq x8+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 (x1, x2, x3, x4, x5, x6, x7, x8) =+                  rnf x1 `seq`+                  rnf x2 `seq`+                  rnf x3 `seq`+                  rnf x4 `seq`+                  rnf x5 `seq`+                  rnf x6 `seq`+                  rnf x7 `seq`+                  rnf x8 -instance (DeepSeq a1, DeepSeq a2, DeepSeq a3, DeepSeq a4, DeepSeq a5, DeepSeq a6, DeepSeq a7, DeepSeq a8, DeepSeq a9) => -         DeepSeq (a1, a2, a3, a4, a5, a6, a7, a8, a9) where-  deepseq (x1, x2, x3, x4, x5, x6, x7, x8, x9) =-                  deepseq x1 `seq`-                  deepseq x2 `seq`-                  deepseq x3 `seq`-                  deepseq x4 `seq`-                  deepseq x5 `seq`-                  deepseq x6 `seq`-                  deepseq x7 `seq`-                  deepseq x8 `seq`-                  deepseq x9+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 (x1, x2, x3, x4, x5, x6, x7, x8, x9) =+                  rnf x1 `seq`+                  rnf x2 `seq`+                  rnf x3 `seq`+                  rnf x4 `seq`+                  rnf x5 `seq`+                  rnf x6 `seq`+                  rnf x7 `seq`+                  rnf x8 `seq`+                  rnf x9
deepseq.cabal view
@@ -1,5 +1,5 @@ name:		deepseq-version:	1.0.0.0+version:	1.1.0.0 license:	BSD3 license-file:	LICENSE maintainer:	libraries@haskell.org@@ -9,7 +9,11 @@     This package provides a \"deep\" version of seq, for fully evluating     data structures. build-type:     Simple-cabal-version:  >=1.2+cabal-version:  >=1.6++source-repository head+    type:     darcs+    location: http://darcs.haskell.org/packages/deepseq/  library {   exposed-modules: Control.DeepSeq