hid-examples-0.5: benchmarks/primcheck/Bench.hs
import Criterion.Main (defaultMain, bench, whnf)
isPrime :: Integer -> Bool
isPrime n = all notDividedBy [2 .. n-1]
where
notDividedBy m = n `mod` m /= 0
isPrime':: Integer -> Bool
isPrime' n = go 2
where
go x = case x > n-1 of
True -> True
False -> case n `mod` x /= 0 of
True -> go (x+1)
False -> False
isPrime'' :: Integer -> Bool
isPrime'' n = all notDividedBy [2 .. n `div` 2]
where
notDividedBy m = n `mod` m /= 0
primeNumber = 16183
main = defaultMain [
bench "isPrime" $ whnf isPrime primeNumber
, bench "isPrime'" $ whnf isPrime' primeNumber
, bench "isPrime''" $ whnf isPrime'' primeNumber
]