@@ -130,8 +130,15 @@ enumerateFromThen count inp = S.take count $ S.enumerateFromThen inp (inp + 1)
130130enumerateFromThenTo :: (Monad m, S.IsStream t) => Int -> Int -> t m Int
131131enumerateFromThenTo = sourceIntFromThenTo
132132
133−-- XXX enumerate?
134−-- XXX enumerateTo?
133+-- n ~ 1
134+{-# INLINE enumerate #-}
135+enumerate :: (Monad m, S.IsStream t) => Int -> Int -> t m Int
136+enumerate count n = S.take (count + n) $ S.enumerate
137+
138+-- n ~ 1
139+{-# INLINE enumerateTo #-}
140+enumerateTo :: (Monad m, S.IsStream t) => Int -> Int -> t m Int
141+enumerateTo count n = S.enumerateFrom (minBound + count + n)
135142
136143{-# INLINE iterate #-}
137144iterate :: (Monad m, S.IsStream t) => Int -> Int -> t m Int
@@ -171,6 +178,10 @@ o_1_space_generation value =
171178 , benchPureSrc "IsList.fromList" (sourceIsList value)
172179 , benchPureSrc "IsString.fromString" (sourceIsString value)
173180 , benchIOSrc serially "fromListM" (sourceFromListM value)
181+ , benchIOSrc serially "enumerateFrom" (enumerateFrom value)
182+ , benchIOSrc serially "enumerateFromThen" (enumerateFromThen value)
183+ , benchIOSrc serially "enumerate" (enumerate value)
184+ , benchIOSrc serially "enumerateTo" (enumerateTo value)
174185
175186 -- These essentially test cons and consM
176187 , benchIOSrc serially "fromFoldable" (sourceFromFoldable value)