title: Scalacheck: Generate list corresponding to list of generators
body: <p>I want to generate a list of integers corresponding to a list of generators in <code>ScalaCheck</code>.</p>
  
  <pre><code>    import org.scalacheck._
      import Arbitrary.arbitrary
  
      val smallInt = Gen.choose(0,10)
      val bigInt = Gen.choose(1000, 1000000)
      val zeroOrOneInt = Gen.choose(0, 1)
      val smallEvenInt = smallInt suchThat (_ % 2 == 0)
  
      val gens = List(smallInt, bigInt, zeroOrOneInt, smallEvenInt)
      //val listGen: Gen[Int] = ??
      //println(listGen.sample) //should print something like List(2, 2000, 0, 6)
  </code></pre>
  
  <p>For the given <code>gens</code>, I would like to create a generator <code>listGen</code> whose valid sample can be <code>List(2, 2000, 0, 6)</code>.
  Here is my first attempt using tuples.</p>
  
  <pre><code>    val gensTuple = (smallInt, bigInt, zeroOrOneInt, smallEvenInt)
      val tupleGen = for {
          a &lt;- gensTuple._1
          b &lt;- gensTuple._2
          c &lt;- gensTuple._3
          d &lt;- gensTuple._4
      } yield (a, b, c, d)
  
      println(tupleGen.sample) // prints Some((1,318091,0,6))
  </code></pre>
  
  <p>This works, but I don't want to use tuples since the list of generators(<code>gens</code>) is created dynamically
  and the size of the list is not fixed. Is there a way to do it with Lists?</p>
  
  <p>I want the use the generator of the list(<code>listGen</code>) in scalacheck <code>forAll</code> property checking.</p>
  
  <p>This looks like a toy problem but this is
  the best I could do to create a standalone snippet reproducing the actual issue I am
  facing.</p>