genNonModePosArg :: Gen [String]
genNonModePosArg = frequency ([ (1, return []), (3, nonEmpty)])
  where
    nonEmpty = (:) <$> firstWord <*> listOf arbitrary
      where
        firstWord = arbitrary `suchThat`
          (\s -> not (s `elem` ["int", "string", "maybe"])
                 && not (startsWithHyphen s))
        startsWithHyphen s = case s of
          '-':_ -> True
          _ -> False
genNonModePosArg :: Gen [String]
genNonModePosArg = frequency ([ (1, return []), (3, nonEmpty)])
  where
    nonEmpty = (:) <$> firstWord <*> listOf arbitrary
      where
        firstWord = arbitrary `suchThat`
          (\s -> not (s `elem` ["int", "string", "maybe"])
                 && not (startsWithHyphen s))
        startsWithHyphen s = case s of
          '-':_ -> True
          _ -> False
genNonModePosArg = frequency ([ (1, return []), (3, nonEmpty)])
  where
    nonEmpty = (:) <$> firstWord <*> listOf arbitrary
      where
        firstWord = arbitrary `suchThat`
          (\s -> not (s `elem` ["int", "string", "maybe"])
                 && not (startsWithHyphen s))
        startsWithHyphen s = case s of
          '-':_ -> True
          _ -> False