loops-0.1.0.0: bench/Bench/Sum.hs
module Bench.Sum where
import qualified Control.Monad.Loop as LoopT
import Data.Foldable
import qualified Data.Vector.Unboxed as V
import Prelude hiding (foldr)
bench_sum_foldl_LoopT :: Int -> Int
bench_sum_foldl_LoopT n =
foldl' (+) 0 (LoopT.for 0 (<= n) (+ 1) :: LoopT.Loop Int)
bench_sum_foldl_List :: Int -> Int
bench_sum_foldl_List n = foldl' (+) 0 [0..n]
bench_sum_foldl_Vector :: Int -> Int
bench_sum_foldl_Vector n = V.foldl' (+) 0 $ V.enumFromTo 0 n
bench_sum_foldr_List :: Int -> Int
bench_sum_foldr_List n = foldr (+) 0 [0..n]
bench_sum_foldr_Vector :: Int -> Int
bench_sum_foldr_Vector n =
V.foldr (+) 0 $ V.enumFromTo 0 n
bench_sum_foldr_LoopT :: Int -> Int
bench_sum_foldr_LoopT n =
foldr (+) 0 (LoopT.for 0 (<= n) (+ 1) :: LoopT.Loop Int)