@@ -40,7 +40,7 @@ parseFunction :: P.Parsec String ParseState Type
4040parseFunction = parens $ P.try (lexeme (P.string "->")) >> return tyFunction
4141
4242parseObject :: P.Parsec String ParseState Type
43−parseObject = braces $ TypeApp tyObject <$> parseRow False
43+parseObject = braces $ TypeApp tyObject <$> parseRow
4444
4545parseTypeVariable :: P.Parsec String ParseState Type
4646parseTypeVariable = do
@@ -67,7 +67,7 @@ parseTypeAtom = indented *> P.choice (map P.try
6767 , parseTypeVariable
6868 , parseTypeConstructor
6969 , parseForAll
70− , parens (parseRow True)
70+ , parens parseRow
7171 , parens parsePolyType ])
7272
7373parseConstrainedType :: P.Parsec String ParseState Type
@@ -111,6 +111,5 @@ parseNameAndType p = (,) <$> (indented *> (identifier <|> stringLiteral) <* inde
111111parseRowEnding :: P.Parsec String ParseState Type
112112parseRowEnding = P.option REmpty (TypeVar <$> (lexeme (indented *> P.char '|') *> indented *> identifier))
113113
114−parseRow :: Bool -> P.Parsec String ParseState Type
115−parseRow nonEmpty = (curry rowFromList <$> many' (parseNameAndType parsePolyType) <*> parseRowEnding) P.<?> "row"
116− where many' = if nonEmpty then commaSep1 else commaSep
114+parseRow :: P.Parsec String ParseState Type
115+parseRow = (curry rowFromList <$> commaSep (parseNameAndType parsePolyType) <*> parseRowEnding) P.<?> "row"