genArbitrary' :: String -> [(String, Bool)] -> String
genArbitrary' name tps = concat [fst_line, snd_line, "\n"]
    where fst_line = concat ["instance Arbitrary ", name, " where \n"]
          snd_line = case tps of 
              []  -> concat ["    arbitrary = return ",name, "\n"]
              tps -> concat ["    arbitrary = ",name, " <$> ", arbitraries, "\n"]
          arbitraries = concat $ intersperse " <*> "$ take (length tps) $ repeat "arbitrary"
genArbitrary' :: String -> [(String, Bool)] -> String
genArbitrary' name tps = concat [fst_line, snd_line, "\n"]
    where fst_line = concat ["instance Arbitrary ", name, " where \n"]
          snd_line = case tps of 
              []  -> concat ["    arbitrary = return ",name, "\n"]
              tps -> concat ["    arbitrary = ",name, " <$> ", arbitraries, "\n"]
          arbitraries = concat $ intersperse " <*> "$ take (length tps) $ repeat "arbitrary"
genArbitrary' name tps = concat [fst_line, snd_line, "\n"]
    where fst_line = concat ["instance Arbitrary ", name, " where \n"]
          snd_line = case tps of 
              []  -> concat ["    arbitrary = return ",name, "\n"]
              tps -> concat ["    arbitrary = ",name, " <$> ", arbitraries, "\n"]
          arbitraries = concat $ intersperse " <*> "$ take (length tps) $ repeat "arbitrary"