packages feed

natural-0.5.0.1: benchmarks/Main.hs

{-# OPTIONS_GHC -Wall -Werror #-}

module Main (main) where

import Test.Tasty.Bench (bench, bgroup, defaultMain, whnf)
import Natural (Natural, zero', successor', plus, multiply)

n :: Int
n = 1000

nat :: Int -> Natural
nat 0 = zero'
nat k = successor' (nat (k - 1))

main :: IO ()
main =
  defaultMain
    [ bgroup
        "Natural"
        [ bench "successor" $ whnf (iterate successor' zero' !!) n,
          bench "plus" $ whnf (plus (nat 100)) (nat 100),
          bench "multiply" $ whnf (multiply (nat 50)) (nat 50)
        ]
    ]