author Roman Leshchinskiy Mon, 24 May 2010 03:22:22 +0000 (03:22 +0000) committer Roman Leshchinskiy Mon, 24 May 2010 03:22:22 +0000 (03:22 +0000)

index c26bc9b..d97d66a 100644 (file)
@@ -1660,7 +1660,7 @@ unstream s = new (New.unstream s)
-- | /O(1)/ Convert a vector to a 'Stream', proceeding from right to left
streamR :: Vector v a => v a -> Stream a
{-# INLINE_STREAM streamR #-}
-- | /O(1)/ Convert a vector to a 'Stream', proceeding from right to left
streamR :: Vector v a => v a -> Stream a
{-# INLINE_STREAM streamR #-}
-streamR v = v `seq` (Stream.unfoldr get n `Stream.sized` Exact n)
+streamR v = v `seq` n `seq` (Stream.unfoldr get n `Stream.sized` Exact n)
where
n = length v

where
n = length v

index 1c056a5..bf00b10 100644 (file)
@@ -213,7 +213,7 @@ unsafePrepend1 v i x

mstream :: (PrimMonad m, MVector v a) => v (PrimState m) a -> MStream m a
{-# INLINE mstream #-}

mstream :: (PrimMonad m, MVector v a) => v (PrimState m) a -> MStream m a
{-# INLINE mstream #-}
-mstream v = v `seq` (MStream.unfoldrM get 0 `MStream.sized` Exact n)
+mstream v = v `seq` n `seq` (MStream.unfoldrM get 0 `MStream.sized` Exact n)
where
n = length v

where
n = length v

@@ -242,7 +242,7 @@ transform f v = fill v (f (mstream v))

mstreamR :: (PrimMonad m, MVector v a) => v (PrimState m) a -> MStream m a
{-# INLINE mstreamR #-}

mstreamR :: (PrimMonad m, MVector v a) => v (PrimState m) a -> MStream m a
{-# INLINE mstreamR #-}
-mstreamR v = v `seq` (MStream.unfoldrM get n `MStream.sized` Exact n)
+mstreamR v = v `seq` n `seq` (MStream.unfoldrM get n `MStream.sized` Exact n)
where
n = length v

where
n = length v

@@ -641,19 +641,23 @@ accum f !v s = Stream.mapM_ upd s
where
{-# INLINE_INNER upd #-}
upd (i,b) = do
where
{-# INLINE_INNER upd #-}
upd (i,b) = do
-                  a <- BOUNDS_CHECK(checkIndex) "accum" i (length v)
+                  a <- BOUNDS_CHECK(checkIndex) "accum" i n
unsafeWrite v i (f a b)

unsafeWrite v i (f a b)

+    !n = length v
+
update :: (PrimMonad m, MVector v a)
=> v (PrimState m) a -> Stream (Int, a) -> m ()
{-# INLINE update #-}
update !v s = Stream.mapM_ upd s
where
{-# INLINE_INNER upd #-}
update :: (PrimMonad m, MVector v a)
=> v (PrimState m) a -> Stream (Int, a) -> m ()
{-# INLINE update #-}
update !v s = Stream.mapM_ upd s
where
{-# INLINE_INNER upd #-}
-    upd (i,b) = BOUNDS_CHECK(checkIndex) "update" i (length v)
+    upd (i,b) = BOUNDS_CHECK(checkIndex) "update" i n
\$ unsafeWrite v i b

\$ unsafeWrite v i b

+    !n = length v
+
unsafeAccum :: (PrimMonad m, MVector v a)
=> (a -> b -> a) -> v (PrimState m) a -> Stream (Int, b) -> m ()
{-# INLINE unsafeAccum #-}
unsafeAccum :: (PrimMonad m, MVector v a)
=> (a -> b -> a) -> v (PrimState m) a -> Stream (Int, b) -> m ()
{-# INLINE unsafeAccum #-}
@@ -661,19 +665,23 @@ unsafeAccum f !v s = Stream.mapM_ upd s
where
{-# INLINE_INNER upd #-}
upd (i,b) = do
where
{-# INLINE_INNER upd #-}
upd (i,b) = do
-                  a <- UNSAFE_CHECK(checkIndex) "accum" i (length v)
+                  a <- UNSAFE_CHECK(checkIndex) "accum" i n
unsafeWrite v i (f a b)

unsafeWrite v i (f a b)

+    !n = length v
+
unsafeUpdate :: (PrimMonad m, MVector v a)
=> v (PrimState m) a -> Stream (Int, a) -> m ()
{-# INLINE unsafeUpdate #-}
unsafeUpdate !v s = Stream.mapM_ upd s
where
{-# INLINE_INNER upd #-}
unsafeUpdate :: (PrimMonad m, MVector v a)
=> v (PrimState m) a -> Stream (Int, a) -> m ()
{-# INLINE unsafeUpdate #-}
unsafeUpdate !v s = Stream.mapM_ upd s
where
{-# INLINE_INNER upd #-}
-    upd (i,b) = UNSAFE_CHECK(checkIndex) "accum" i (length v)
+    upd (i,b) = UNSAFE_CHECK(checkIndex) "accum" i n
\$ unsafeWrite v i b

\$ unsafeWrite v i b

+    !n = length v
+
reverse :: (PrimMonad m, MVector v a) => v (PrimState m) a -> m ()
{-# INLINE reverse #-}
reverse !v = reverse_loop 0 (length v - 1)
reverse :: (PrimMonad m, MVector v a) => v (PrimState m) a -> m ()
{-# INLINE reverse #-}
reverse !v = reverse_loop 0 (length v - 1)