Move enumFromThenTo to the stream layer
authorRoman Leshchinskiy <rl@cse.unsw.edu.au>
Wed, 2 Dec 2009 15:02:51 +0000 (15:02 +0000)
committerRoman Leshchinskiy <rl@cse.unsw.edu.au>
Wed, 2 Dec 2009 15:02:51 +0000 (15:02 +0000)
Data/Vector/Fusion/Stream.hs
Data/Vector/Fusion/Stream/Monadic.hs
Data/Vector/Generic.hs

index 057de01..1c4b962 100644 (file)
@@ -62,7 +62,7 @@ module Data.Vector.Fusion.Stream (
   scanl1, scanl1',
 
   -- * Enumerations
-  enumFromTo,
+  enumFromTo, enumFromThenTo,
 
   -- * Conversions
   toList, fromList, liftStream,
@@ -493,6 +493,10 @@ enumFromTo :: Enum a => a -> a -> Stream a
 {-# INLINE enumFromTo #-}
 enumFromTo = M.enumFromTo
 
+enumFromThenTo :: Enum a => a -> a -> a -> Stream a
+{-# INLINE enumFromThenTo #-}
+enumFromThenTo = M.enumFromThenTo
+
 -- Conversions
 -- -----------
 
index 24d2a83..d28de68 100644 (file)
@@ -60,7 +60,7 @@ module Data.Vector.Fusion.Stream.Monadic (
   scanl1, scanl1M, scanl1', scanl1M',
 
   -- * Enumerations
-  enumFromTo,
+  enumFromTo, enumFromThenTo,
 
   -- * Conversions
   toList, fromList
@@ -1018,6 +1018,10 @@ enumFromTo_big x y = Stream step x (Exact n)
   #-}
 
 
+-- | Enumerate values from @x@ to @y@
+enumFromThenTo :: (Enum a, Monad m) => a -> a -> a -> Stream m a
+{-# INLINE_STREAM enumFromThenTo #-}
+enumFromThenTo x y z = fromList [x, y .. y]
 
 -- Conversions
 -- -----------
index 6e1f722..95e55a2 100644 (file)
@@ -653,7 +653,7 @@ enumFromTo x y = unstream (Stream.enumFromTo x y)
 
 enumFromThenTo :: (Vector v a, Enum a) => a -> a -> a -> v a
 {-# INLINE enumFromThenTo #-}
-enumFromThenTo from next to = fromList [from, next .. to]
+enumFromThenTo x y z = unstream (Stream.enumFromThenTo x y z)
 
 -- | Convert a vector to a list
 toList :: Vector v a => v a -> [a]