speculate-0.3.5: bench/qs1/arithficial.hs
import Test.QuickSpec
f :: Num a => a -> a -> a
f x y = x*17+23
g :: Num a => a -> a -> a
g x y = 42
h :: Num a => a -> a -> a
h x y = y*13+19
type I = Int
main =
quickSpec
[ ["x", "y", "z", "w"] `vars` (undefined :: I)
, "0" `fun0` (0 :: I)
, "id" `fun1` (id :: I -> I)
, "+" `fun2` ((+) :: I -> I -> I)
, "f" `fun2` (f :: I -> I -> I)
, "g" `fun2` (g :: I -> I -> I)
, "h" `fun2` (h :: I -> I -> I)
]