module Test.QuickCheck.Instances.Tuple where

import Test.QuickCheck
import Control.Monad

{- | Generates a 2-tuple using its arguments to generate the parts.
-}
(>*<) :: Gen a -> Gen b -> Gen (a,b)
x >*< y = liftM2 (,) x y

{- | Generates a 3-tuple using its arguments to generate the parts.
-}
(>**<) :: Gen a -> Gen b -> Gen c -> Gen (a,b,c)
(>**<) x y z = liftM3 (,,) x y z

{- | Generates a 4-tuple using its arguments to generate the parts.
-}
(>***<) :: Gen a -> Gen b -> Gen c -> Gen d -> Gen (a,b,c,d)
(>***<) x y z a = liftM4 (,,,) x y z a

{- | Generates a 5-tuple using its arguments to generate the parts.
-}
(>****<) :: Gen a -> Gen b -> Gen c -> Gen d -> Gen e -> Gen (a,b,c,d,e)
(>****<) x y z a b= liftM5 (,,,,) x y z a b