[commit: vector] : Use delayed_min in Unboxed tuple instances (79bccc7)
Roman Leshchinskiy
rl at cse.unsw.edu.au
Sun Jun 19 23:15:52 CEST 2011
Repository : ssh://darcs.haskell.org//srv/darcs/packages/vector
On branch :
http://hackage.haskell.org/trac/ghc/changeset/79bccc7a785dd37b05daa5d5e62ac416216200dc
>---------------------------------------------------------------
commit 79bccc7a785dd37b05daa5d5e62ac416216200dc
Author: Roman Leshchinskiy <rl at cse.unsw.edu.au>
Date: Sat May 14 11:01:24 2011 +0000
Use delayed_min in Unboxed tuple instances
>---------------------------------------------------------------
Data/Vector/Unboxed.hs | 1 +
Data/Vector/Unboxed/Mutable.hs | 1 +
internal/GenUnboxTuple.hs | 2 +-
internal/unbox-tuple-instances | 56 ++++++++++++++++++++++-----------------
4 files changed, 35 insertions(+), 25 deletions(-)
diff --git a/Data/Vector/Unboxed.hs b/Data/Vector/Unboxed.hs
index 95afb0d..3753c98 100644
--- a/Data/Vector/Unboxed.hs
+++ b/Data/Vector/Unboxed.hs
@@ -162,6 +162,7 @@ module Data.Vector.Unboxed (
import Data.Vector.Unboxed.Base
import qualified Data.Vector.Generic as G
import qualified Data.Vector.Fusion.Stream as Stream
+import Data.Vector.Fusion.Util ( delayed_min )
import Control.Monad.ST ( ST )
import Control.Monad.Primitive
diff --git a/Data/Vector/Unboxed/Mutable.hs b/Data/Vector/Unboxed/Mutable.hs
index 21933bc..60fbfa9 100644
--- a/Data/Vector/Unboxed/Mutable.hs
+++ b/Data/Vector/Unboxed/Mutable.hs
@@ -57,6 +57,7 @@ module Data.Vector.Unboxed.Mutable (
import Data.Vector.Unboxed.Base
import qualified Data.Vector.Generic.Mutable as G
+import Data.Vector.Fusion.Util ( delayed_min )
import Control.Monad.Primitive
import Prelude hiding ( length, null, replicate, reverse, map, read,
diff --git a/internal/GenUnboxTuple.hs b/internal/GenUnboxTuple.hs
index 5711667..748cda7 100644
--- a/internal/GenUnboxTuple.hs
+++ b/internal/GenUnboxTuple.hs
@@ -71,7 +71,7 @@ generate n =
,nest 2 $ hang (text "where")
2
$ text "len ="
- <+> sep (punctuate (text " `min`")
+ <+> sep (punctuate (text " `delayed_min`")
[text "length" <+> vs | vs <- varss])
]
where
diff --git a/internal/unbox-tuple-instances b/internal/unbox-tuple-instances
index d5f5879..9cf5e35 100644
--- a/internal/unbox-tuple-instances
+++ b/internal/unbox-tuple-instances
@@ -107,7 +107,7 @@ zip :: (Unbox a, Unbox b) => MVector s a ->
MVector s b -> MVector s (a, b)
{-# INLINE_STREAM zip #-}
zip as bs = MV_2 len (unsafeSlice 0 len as) (unsafeSlice 0 len bs)
- where len = length as `min` length bs
+ where len = length as `delayed_min` length bs
-- | /O(1)/ Unzip 2 vectors
unzip :: (Unbox a, Unbox b) => MVector s (a, b) -> (MVector s a,
MVector s b)
@@ -119,7 +119,7 @@ unzip (MV_2 n_ as bs) = (as, bs)
zip :: (Unbox a, Unbox b) => Vector a -> Vector b -> Vector (a, b)
{-# INLINE_STREAM zip #-}
zip as bs = V_2 len (unsafeSlice 0 len as) (unsafeSlice 0 len bs)
- where len = length as `min` length bs
+ where len = length as `delayed_min` length bs
{-# RULES "stream/zip [Vector.Unboxed]" forall as bs .
G.stream (zip as bs) = Stream.zipWith (,) (G.stream as)
(G.stream bs)
@@ -265,7 +265,8 @@ zip3 :: (Unbox a, Unbox b, Unbox c) => MVector s a ->
zip3 as bs cs = MV_3 len (unsafeSlice 0 len as)
(unsafeSlice 0 len bs)
(unsafeSlice 0 len cs)
- where len = length as `min` length bs `min` length cs
+ where
+ len = length as `delayed_min` length bs `delayed_min` length cs
-- | /O(1)/ Unzip 3 vectors
unzip3 :: (Unbox a,
Unbox b,
@@ -284,7 +285,8 @@ zip3 :: (Unbox a, Unbox b, Unbox c) => Vector a ->
zip3 as bs cs = V_3 len (unsafeSlice 0 len as)
(unsafeSlice 0 len bs)
(unsafeSlice 0 len cs)
- where len = length as `min` length bs `min` length cs
+ where
+ len = length as `delayed_min` length bs `delayed_min` length cs
{-# RULES "stream/zip3 [Vector.Unboxed]" forall as bs cs .
G.stream (zip3 as bs cs) = Stream.zipWith3 (, ,) (G.stream as)
(G.stream bs)
@@ -465,7 +467,10 @@ zip4 as bs cs ds = MV_4 len (unsafeSlice 0 len as)
(unsafeSlice 0 len cs)
(unsafeSlice 0 len ds)
where
- len = length as `min` length bs `min` length cs `min` length ds
+ len = length as `delayed_min`
+ length bs `delayed_min`
+ length cs `delayed_min`
+ length ds
-- | /O(1)/ Unzip 4 vectors
unzip4 :: (Unbox a,
Unbox b,
@@ -489,7 +494,10 @@ zip4 as bs cs ds = V_4 len (unsafeSlice 0 len as)
(unsafeSlice 0 len cs)
(unsafeSlice 0 len ds)
where
- len = length as `min` length bs `min` length cs `min` length ds
+ len = length as `delayed_min`
+ length bs `delayed_min`
+ length cs `delayed_min`
+ length ds
{-# RULES "stream/zip4 [Vector.Unboxed]" forall as bs cs ds .
G.stream (zip4 as bs cs ds) = Stream.zipWith4 (, , ,) (G.stream as)
(G.stream bs)
@@ -713,10 +721,10 @@ zip5 as bs cs ds es = MV_5 len (unsafeSlice 0 len as)
(unsafeSlice 0 len ds)
(unsafeSlice 0 len es)
where
- len = length as `min`
- length bs `min`
- length cs `min`
- length ds `min`
+ len = length as `delayed_min`
+ length bs `delayed_min`
+ length cs `delayed_min`
+ length ds `delayed_min`
length es
-- | /O(1)/ Unzip 5 vectors
unzip5 :: (Unbox a,
@@ -749,10 +757,10 @@ zip5 as bs cs ds es = V_5 len (unsafeSlice 0 len as)
(unsafeSlice 0 len ds)
(unsafeSlice 0 len es)
where
- len = length as `min`
- length bs `min`
- length cs `min`
- length ds `min`
+ len = length as `delayed_min`
+ length bs `delayed_min`
+ length cs `delayed_min`
+ length ds `delayed_min`
length es
{-# RULES "stream/zip5 [Vector.Unboxed]" forall as bs cs ds es .
G.stream (zip5 as
@@ -1013,11 +1021,11 @@ zip6 as bs cs ds es fs = MV_6 len (unsafeSlice 0 len as)
(unsafeSlice 0 len es)
(unsafeSlice 0 len fs)
where
- len = length as `min`
- length bs `min`
- length cs `min`
- length ds `min`
- length es `min`
+ len = length as `delayed_min`
+ length bs `delayed_min`
+ length cs `delayed_min`
+ length ds `delayed_min`
+ length es `delayed_min`
length fs
-- | /O(1)/ Unzip 6 vectors
unzip6 :: (Unbox a,
@@ -1055,11 +1063,11 @@ zip6 as bs cs ds es fs = V_6 len (unsafeSlice 0 len as)
(unsafeSlice 0 len es)
(unsafeSlice 0 len fs)
where
- len = length as `min`
- length bs `min`
- length cs `min`
- length ds `min`
- length es `min`
+ len = length as `delayed_min`
+ length bs `delayed_min`
+ length cs `delayed_min`
+ length ds `delayed_min`
+ length es `delayed_min`
length fs
{-# RULES "stream/zip6 [Vector.Unboxed]" forall as bs cs ds es fs .
G.stream (zip6 as
More information about the Cvs-libraries
mailing list