Add dropWhileFalse/dropOne

Also, disable monadic versions of drop/take.  Pure versions use the monadic
ones internally so the monadic benchmarks are redundant unless we change the
implementations in future.
This commit is contained in:
Harendra Kumar 2018-10-31 16:50:00 +05:30
parent 3524799d3d
commit c8aaba38cb
2 changed files with 15 additions and 7 deletions

View File

@ -115,10 +115,12 @@ main =
, benchIO "filter-all-in" (Ops.filterAllIn 1)
, benchIO "take-all" (Ops.takeAll 1)
, benchIO "takeWhile-true" (Ops.takeWhileTrue 1)
, benchIO "takeWhileM-true" (Ops.takeWhileMTrue 1)
--, benchIO "takeWhileM-true" (Ops.takeWhileMTrue 1)
, benchIO "drop-one" (Ops.dropOne 1)
, benchIO "drop-all" (Ops.dropAll 1)
, benchIO "dropWhile-true" (Ops.dropWhileTrue 1)
, benchIO "dropWhileM-true" (Ops.dropWhileMTrue 1)
--, benchIO "dropWhileM-true" (Ops.dropWhileMTrue 1)
, benchIO "dropWhile-false" (Ops.dropWhileFalse 1)
]
, bgroup "filteringN"
[ benchIO "filter-even" (Ops.filterEven 4)
@ -126,10 +128,12 @@ main =
, benchIO "filter-all-in" (Ops.filterAllIn 4)
, benchIO "take-all" (Ops.takeAll 4)
, benchIO "takeWhile-true" (Ops.takeWhileTrue 4)
, benchIO "takeWhileM-true" (Ops.takeWhileMTrue 4)
--, benchIO "takeWhileM-true" (Ops.takeWhileMTrue 4)
, benchIO "drop-one" (Ops.dropOne 4)
, benchIO "drop-all" (Ops.dropAll 4)
, benchIO "dropWhile-true" (Ops.dropWhileTrue 4)
, benchIO "dropWhileM-true" (Ops.dropWhileMTrue 4)
--, benchIO "dropWhileM-true" (Ops.dropWhileMTrue 4)
, benchIO "dropWhile-false" (Ops.dropWhileFalse 4)
]
, benchIO "zip" Ops.zip
, benchIO "zipM" Ops.zipM
@ -147,7 +151,7 @@ main =
]
, bgroup "iterated"
[ benchSrcIO serially "mapM" Ops.iterateMapM
, benchSrcIO serially "scan" Ops.iterateScan
, benchSrcIO serially "scan(1/100)" Ops.iterateScan
, benchSrcIO serially "filterEven" Ops.iterateFilterEven
, benchSrcIO serially "takeAll" Ops.iterateTakeAll
, benchSrcIO serially "dropOne" Ops.iterateDropOne

View File

@ -242,14 +242,16 @@ composeN' n f =
{-# INLINE takeAll #-}
{-# INLINE takeWhileTrue #-}
{-# INLINE takeWhileMTrue #-}
{-# INLINE dropOne #-}
{-# INLINE dropAll #-}
{-# INLINE dropWhileTrue #-}
{-# INLINE dropWhileMTrue #-}
{-# INLINE dropWhileFalse #-}
{-# INLINE findIndices #-}
{-# INLINE elemIndices #-}
scan, map, fmap, mapMaybe, filterEven, filterAllOut,
filterAllIn, takeOne, takeAll, takeWhileTrue, takeWhileMTrue, dropAll,
dropWhileTrue, dropWhileMTrue,
filterAllIn, takeOne, takeAll, takeWhileTrue, takeWhileMTrue, dropOne,
dropAll, dropWhileTrue, dropWhileMTrue, dropWhileFalse,
findIndices, elemIndices
:: Monad m
=> Int -> Stream m Int -> m ()
@ -281,9 +283,11 @@ takeOne n = composeN n $ S.take 1
takeAll n = composeN n $ S.take maxValue
takeWhileTrue n = composeN n $ S.takeWhile (<= maxValue)
takeWhileMTrue n = composeN n $ S.takeWhileM (return . (<= maxValue))
dropOne n = composeN n $ S.drop 1
dropAll n = composeN n $ S.drop maxValue
dropWhileTrue n = composeN n $ S.dropWhile (<= maxValue)
dropWhileMTrue n = composeN n $ S.dropWhileM (return . (<= maxValue))
dropWhileFalse n = composeN n $ S.dropWhile (<= 1)
findIndices n = composeN n $ S.findIndices (== maxValue)
elemIndices n = composeN n $ S.elemIndices maxValue