forAllPar constructs properties for parallel computations by generating both an input and an executor, then running the computation inside the property test.
It separates executor management from the property itself, avoiding repeated run and get calls while testing behavior across several parallel strategies. section 8.2.3
Testing map identity
val gpy: Gen[Par[Int]] = Gen.choose(0,10).map(Par.unit(_)) val property = Prop.forAllPar(gpy)(py => equal(py.map(y => y), py))
