grab-0.0.0.1: bench/time.hs
{-# OPTIONS_GHC -Wall #-}
import qualified Control.Grab as Grab
import Criterion.Main
import qualified Data.List as List
import Prelude hiding (filter)
parity :: Integer -> Maybe (Integer, Integer)
parity n = Grab.desideratum (Grab.runGrab g [1..n])
where
g = (,) <$> (sum <$> filter even) <*> (sum <$> filter odd)
filter :: (a -> Bool) -> Grab.Simple [a] () [a]
filter p = Grab.partition (List.partition p)
main :: IO ()
main = defaultMain [
bgroup "parity"
(
(\i -> let n = i * 10000 in
bench (show i) (nf parity n)
)
<$> [1..4]
)
]