deepseq 1.3.0.1 → 1.3.0.2
raw patch · 3 files changed
+90/−28 lines, 3 filesdep ~arraydep ~basenew-uploaderPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: array, base
API changes (from Hackage documentation)
Files
- Control/DeepSeq.hs +31/−19
- changelog +35/−0
- deepseq.cabal +24/−9
Control/DeepSeq.hs view
@@ -1,4 +1,5 @@-#if __GLASGOW_HASKELL__ >= 703+{-# LANGUAGE CPP #-}+#if __GLASGOW_HASKELL__ >= 702 && MIN_VERSION_array(0,4,0) {-# LANGUAGE Safe #-} #endif -----------------------------------------------------------------------------@@ -6,7 +7,7 @@ -- Module : Control.DeepSeq -- Copyright : (c) The University of Glasgow 2001-2009 -- License : BSD-style (see the file LICENSE)--- +-- -- Maintainer : libraries@haskell.org -- Stability : stable -- Portability : portable@@ -19,7 +20,7 @@ -- -- > import System.IO -- > import Control.DeepSeq--- > +-- > -- > main = do -- > h <- openFile "f" ReadMode -- > s <- hGetContents h@@ -44,6 +45,7 @@ -- thread, before passing to another thread (preventing work moving to -- the wrong threads). --+-- /Since: 1.1.0.0/ module Control.DeepSeq ( deepseq, ($!!), force, NFData(..),@@ -78,11 +80,14 @@ -- evaluation, use 'pseq' from "Control.Parallel" in the -- @parallel@ package. --+-- /Since: 1.1.0.0/ deepseq :: NFData a => a -> b -> b deepseq a b = rnf a `seq` b -- | the deep analogue of '$!'. In the expression @f $!! x@, @x@ is -- fully evaluated before the function @f@ is applied to it.+--+-- /Since: 1.2.0.0/ ($!!) :: (NFData a) => (a -> b) -> a -> b f $!! x = x `deepseq` f x @@ -94,25 +99,28 @@ -- @force x@ only performs evaluation when the value of @force x@ -- itself is demanded, so essentially it turns shallow evaluation into -- deep evaluation.-+--+-- /Since: 1.2.0.0/ force :: (NFData a) => a -> a force x = x `deepseq` x -- | A class of types that can be fully evaluated.+--+-- /Since: 1.1.0.0/ 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 'rnf' is+ -- -- > rnf a = a `seq` ()- -- + -- -- which may be convenient when defining instances for data types with -- no unevaluated fields (e.g. enumerations). rnf :: a -> () rnf a = a `seq` () -instance NFData Int +instance NFData Int instance NFData Word instance NFData Integer instance NFData Float@@ -132,10 +140,13 @@ instance NFData Word32 instance NFData Word64 +-- |/Since: 1.3.0.0/ instance NFData (Fixed a) -- |This instance is for convenience and consistency with 'seq'. -- This assumes that WHNF is equivalent to NF for functions.+--+-- /Since: 1.3.0.0/ instance NFData (a -> b) --Rational and complex numbers.@@ -144,7 +155,7 @@ rnf x = rnf (numerator x, denominator x) instance (RealFloat a, NFData a) => NFData (Complex a) where- rnf (x:+y) = rnf x `seq` + rnf (x:+y) = rnf x `seq` rnf y `seq` () @@ -156,6 +167,7 @@ rnf (Left x) = rnf x rnf (Right y) = rnf y +-- |/Since: 1.3.0.0/ instance NFData Data.Version.Version where rnf (Data.Version.Version branch tags) = rnf branch `seq` rnf tags @@ -170,15 +182,15 @@ rnf (x,y) = rnf x `seq` rnf y instance (NFData a, NFData b, NFData c) => NFData (a,b,c) where- rnf (x,y,z) = rnf x `seq` rnf y `seq` rnf z + rnf (x,y,z) = rnf x `seq` rnf y `seq` rnf z 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 + rnf (x1,x2,x3,x4) = rnf x1 `seq`+ rnf x2 `seq`+ rnf x3 `seq`+ rnf x4 -instance (NFData a1, NFData a2, NFData a3, NFData a4, NFData a5) => +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`@@ -187,7 +199,7 @@ rnf x4 `seq` rnf x5 -instance (NFData a1, NFData a2, NFData a3, NFData a4, NFData a5, NFData a6) => +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`@@ -197,7 +209,7 @@ rnf x5 `seq` rnf x6 -instance (NFData a1, NFData a2, NFData a3, NFData a4, NFData a5, NFData a6, NFData a7) => +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`@@ -208,7 +220,7 @@ rnf x6 `seq` rnf x7 -instance (NFData a1, NFData a2, NFData a3, NFData a4, NFData a5, NFData a6, NFData a7, NFData a8) => +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`@@ -220,7 +232,7 @@ rnf x7 `seq` rnf x8 -instance (NFData a1, NFData a2, NFData a3, NFData a4, NFData a5, NFData a6, NFData a7, NFData a8, NFData a9) => +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`
+ changelog view
@@ -0,0 +1,35 @@+-*-change-log-*-++1.3.0.2 Nov 2013+ * Update package description to Cabal 1.10 format+ * Add support for GHC 7.8+ * Drop support for GHCs older than GHC 7.0.1+ * Add `/since: .../` annotations to Haddock comments+ * Add changelog++1.3.0.1 Sep 2012+ * No changes++1.3.0.0 Feb 2012+ * Add instances for `Fixed`, `a->b` and `Version`++1.3.0.1 Sep 2011+ * Disable SafeHaskell for GHC 7.2++1.2.0.0 Sep 2011+ * New function `force`+ * New operator `$!!`+ * Add SafeHaskell support+ * Dropped dependency on containers++1.1.0.2 Nov 2010+ * Improve Haddock documentation++1.1.0.1 Oct 2010+ * Enable support for containers-0.4.x++1.1.0.0 Nov 2009+ * Major rewrite++1.0.0.0 Nov 2009+ * Initial release
deepseq.cabal view
@@ -1,5 +1,6 @@ name: deepseq-version: 1.3.0.1+version: 1.3.0.2+-- GHC 7.6.1 released with 1.3.0.1 license: BSD3 license-file: LICENSE maintainer: libraries@haskell.org@@ -19,17 +20,31 @@ components) which defines strategies for fully evaluating different data types. .+ If you want to automatically derive 'NFData' instances via the+ "GHC.Generics" facility, there is a companion package+ <http://hackage.haskell.org/package/deepseq-generics deepseq-generics>+ which builds on top of this package. build-type: Simple-cabal-version: >=1.6+cabal-version: >=1.10+tested-with: GHC==7.6.3, GHC==7.6.2, GHC==7.6.1, GHC==7.4.2, GHC==7.4.1, GHC==7.2.2, GHC==7.2.1, GHC==7.0.4, GHC==7.0.3, GHC==7.0.2, GHC==7.0.1 +extra-source-files: changelog+ source-repository head- type: git- location: http://darcs.haskell.org/packages/deepseq.git/+ type: git+ location: http://git.haskell.org/packages/deepseq.git -library {+source-repository this+ type: git+ location: http://git.haskell.org/packages/deepseq.git+ tag: deepseq-1.3.0.2-release++library+ default-language: Haskell2010+ other-extensions: CPP+ if impl(ghc >= 7.2)+ other-extensions: Safe exposed-modules: Control.DeepSeq- build-depends: base >= 3 && < 5, - array >= 0.1 && < 0.5+ build-depends: base >= 4.3 && < 4.8,+ array >= 0.3 && < 0.6 ghc-options: -Wall- extensions: CPP-}