flow-1.0.1: FlowBench.hs
module Main (main) where
import Criterion.Main
import Flow
main :: IO ()
main = defaultMain
[ bgroup "application"
[ bench "f x" $ whnf f x
, bench "apply x f" $ whnf (apply x) f
, bench "x |> f" $ whnf (x |>) f
, bench "f <| x" $ whnf (<| x) f
]
, bgroup "composition"
[ bench "f . g" $ whnf (f .) g
, bench "compose f g" $ whnf (compose f) g
, bench "f .> g" $ whnf (f .>) g
, bench "g <. f" $ whnf (<. f) g
]
, bgroup "strict application"
[ bench "seq x (f x)" $ whnf (seq x) (f x)
, bench "apply' x f" $ whnf (apply' x) f
, bench "x !> f" $ whnf (x !>) f
, bench "f <! x" $ whnf (<! x) f
]
]
x :: Int
x = 2
f :: Int -> Int
f = (+ 2)
g :: Int -> Int
g = (* 2)