
Whenever I want to use quickCheck to test some function with multiple input parameters, I end up writing boilerplate code that looks like the example below. I have a feeling I'm missing out on some good Haskell tricks. In particular, writing a function like arbXYZ for every combination of parameter types that I need to test is a bit repetitive. Is there a better way? Thank you in advance, Amy ----- code example ----- functionIWantToTest :: Double -> Int -> Bool -> Double functionIWantToTest x y z = 27 -- pretend we're doing something useful arbXYZ :: Gen (Double, Int, Bool) arbXYZ = do x <- choose (0.0, 1.0) y <- choose (1, 10) z <- arbitrary return (x, y, z) conditionIWantToCheck :: (Double, Int, Bool) -> Bool conditionIWantToCheck (x, y, z) = True -- pretend we're checking something prop_i_want_to_check :: Property prop_i_want_to_check = forAll arbXYZ conditionIWantToCheck