Get rid of inplace'
authorRoman Leshchinskiy <rl@cse.unsw.edu.au>
Tue, 8 Dec 2009 03:20:19 +0000 (03:20 +0000)
committerRoman Leshchinskiy <rl@cse.unsw.edu.au>
Tue, 8 Dec 2009 03:20:19 +0000 (03:20 +0000)
Data/Vector/Fusion/Stream.hs
Data/Vector/Generic.hs

index 02f306a..804e625 100644 (file)
@@ -17,7 +17,7 @@ module Data.Vector.Fusion.Stream (
   Step(..), Stream, MStream,
 
   -- * In-place markers
-  inplace, inplace',
+  inplace,
 
   -- * Size hints
   size, sized,
@@ -99,8 +99,8 @@ type Stream = M.Stream Id
 -- | Alternative name for monadic streams
 type MStream = M.Stream
 
-inplace :: (forall m. Monad m => M.Stream m a -> M.Stream m a)
-        -> Stream a -> Stream a
+inplace :: (forall m. Monad m => M.Stream m a -> M.Stream m b)
+        -> Stream a -> Stream b
 {-# INLINE_STREAM inplace #-}
 inplace f s = s `seq` f s
 
@@ -114,27 +114,6 @@ inplace f s = s `seq` f s
 
   #-}
 
-inplace' :: (forall m. Monad m => M.Stream m a -> M.Stream m b)
-         -> Stream a -> Stream b
-{-# INLINE_STREAM inplace' #-}
-inplace' f s = s `seq`f s
-
--- FIXME: We'd like to have this
-{- RULES
-
-"inplace' [Vector]" inplace' = inplace
--}
--- but it's only available in 6.13
--- (see http://hackage.haskell.org/trac/ghc/ticket/3670)
-
-{-# RULES
-
-"inplace' [Vector]"
-  forall (f :: forall m. Monad m => MStream m a -> MStream m a).
-  inplace' f = inplace f
-
-  #-}
-
 -- | Convert a pure stream to a monadic stream
 liftStream :: Monad m => Stream a -> M.Stream m a
 {-# INLINE_STREAM liftStream #-}
index 02d7df6..8c8b320 100644 (file)
@@ -89,7 +89,7 @@ import qualified Data.Vector.Generic.New as New
 import           Data.Vector.Generic.New ( New )
 
 import qualified Data.Vector.Fusion.Stream as Stream
-import           Data.Vector.Fusion.Stream ( Stream, MStream, inplace, inplace' )
+import           Data.Vector.Fusion.Stream ( Stream, MStream, inplace )
 import qualified Data.Vector.Fusion.Stream.Monadic as MStream
 import           Data.Vector.Fusion.Stream.Size
 import           Data.Vector.Fusion.Util
@@ -521,7 +521,7 @@ reverse = new . New.reverse . New.unstream . stream
 -- | Map a function over a vector
 map :: (Vector v a, Vector v b) => (a -> b) -> v a -> v b
 {-# INLINE map #-}
-map f = unstream . inplace' (MStream.map f) . stream
+map f = unstream . inplace (MStream.map f) . stream
 
 concatMap :: (Vector v a, Vector v b) => (a -> v b) -> v a -> v b
 {-# INLINE concatMap #-}
@@ -773,22 +773,22 @@ unfoldr f = unstream . Stream.unfoldr f
 -- | Prefix scan
 prescanl :: (Vector v a, Vector v b) => (a -> b -> a) -> a -> v b -> v a
 {-# INLINE prescanl #-}
-prescanl f z = unstream . inplace' (MStream.prescanl f z) . stream
+prescanl f z = unstream . inplace (MStream.prescanl f z) . stream
 
 -- | Prefix scan with strict accumulator
 prescanl' :: (Vector v a, Vector v b) => (a -> b -> a) -> a -> v b -> v a
 {-# INLINE prescanl' #-}
-prescanl' f z = unstream . inplace' (MStream.prescanl' f z) . stream
+prescanl' f z = unstream . inplace (MStream.prescanl' f z) . stream
 
 -- | Suffix scan
 postscanl :: (Vector v a, Vector v b) => (a -> b -> a) -> a -> v b -> v a
 {-# INLINE postscanl #-}
-postscanl f z = unstream . inplace' (MStream.postscanl f z) . stream
+postscanl f z = unstream . inplace (MStream.postscanl f z) . stream
 
 -- | Suffix scan with strict accumulator
 postscanl' :: (Vector v a, Vector v b) => (a -> b -> a) -> a -> v b -> v a
 {-# INLINE postscanl' #-}
-postscanl' f z = unstream . inplace' (MStream.postscanl' f z) . stream
+postscanl' f z = unstream . inplace (MStream.postscanl' f z) . stream
 
 -- | Haskell-style scan
 scanl :: (Vector v a, Vector v b) => (a -> b -> a) -> a -> v b -> v a