In double fact

There is special language syntax built-in for this programming pattern[2]

instance Arbitrary Person where
  arbitrary = do a <- arbitrary
                 f <- arbitrary
                 s <- arbitrary
                 g <- arbGender
                 return (P a f s g)
  coarbitrary = undefined



[2] Note that do and <- are keywords