To fix the immediate error, remove the type annotation, i.e., use
qcTestGengame9 :: TestTree
qcTestGengame9 = QC.testProperty "Better gen rate" $
\ g -> (length . unGame . unGame9) g == 9
The expression unGame9 g
already ensures g :: Game9
.
But actually it's simpler: with game9_prop
as defined, you can just use
qcTestGengame9 :: TestTree
qcTestGengame9 = QC.testProperty "Better gen rate" game9_prop