@@ -47,10 +47,10 @@ parseBooleanLiteral :: P.Parsec String ParseState Value
4747parseBooleanLiteral = BooleanLiteral <$> booleanLiteral
4848
4949parseArrayLiteral :: P.Parsec String ParseState Value
50−parseArrayLiteral = ArrayLiteral <$> C.squares (parseValue `P.sepBy` (C.indented *> C.comma))
50+parseArrayLiteral = ArrayLiteral <$> C.squares (C.commaSep parseValue)
5151
5252parseObjectLiteral :: P.Parsec String ParseState Value
53−parseObjectLiteral = ObjectLiteral <$> C.braces (parseIdentifierAndValue `P.sepBy` (C.indented *> C.comma))
53+parseObjectLiteral = ObjectLiteral <$> C.braces (C.commaSep parseIdentifierAndValue)
5454
5555parseIdentifierAndValue :: P.Parsec String ParseState (String, Value)
5656parseIdentifierAndValue = (,) <$> (C.indented *> C.identifier <* C.indented <* C.colon)
@@ -66,7 +66,7 @@ parseAbs = do
6666 where
6767 manyArgs :: P.Parsec String ParseState (Value -> Value)
6868 manyArgs = do
69− args <- C.parens ((C.indented *> C.parseIdent) `P.sepBy` (C.indented *> C.comma))
69+ args <- C.parens (C.commaSep C.parseIdent)
7070 return $ Abs args
7171 singleArg :: P.Parsec String ParseState (Value -> Value)
7272 singleArg = Abs . return <$> C.parseIdent
@@ -76,7 +76,7 @@ parseAbs = do
7676
7777parseApp :: P.Parsec String ParseState Value
7878parseApp = App <$> parseValue
79− <*> (C.indented *> C.parens (parseValue `P.sepBy` (C.indented *> C.comma)))
79+ <*> (C.indented *> C.parens (C.commaSep parseValue))
8080
8181parseVar :: P.Parsec String ParseState Value
8282parseVar = Var <$> C.parseQualified C.parseIdent
@@ -134,9 +134,9 @@ parseValue =
134134 where
135135 indexersAndAccessors = C.buildPostfixParser postfixTable1 parseValueAtom
136136 postfixTable1 = [ Accessor <$> (C.indented *> C.dot *> C.indented *> C.identifier)
137− , P.try $ flip ObjectUpdate <$> (C.indented *> C.braces ((C.indented *> parsePropertyUpdate) `P.sepBy1` (C.indented *> C.comma))) ]
137+ , P.try $ flip ObjectUpdate <$> (C.indented *> C.braces (C.commaSep1 (C.indented *> parsePropertyUpdate))) ]
138138 postfixTable2 = [ P.try (C.indented *> indexersAndAccessors >>= \t2 -> return (\t1 -> App t1 [t2]))
139− , P.try $ flip App <$> (C.indented *> C.parens (parseValue `P.sepBy` (C.indented *> C.comma)))
139+ , P.try $ flip App <$> (C.indented *> C.parens (C.commaSep parseValue))
140140 , flip TypedValue <$> (P.try (C.lexeme (C.indented *> P.string "::")) *> parsePolyType) ]
141141 operators = [ [ Prefix $ C.lexeme (P.try $ C.indented *> C.reservedOp "!") >> return (Unary Not)
142142 , Prefix $ C.lexeme (P.try $ C.indented *> C.reservedOp "~") >> return (Unary BitwiseNot)
@@ -221,10 +221,10 @@ parseUnaryBinder :: P.Parsec String ParseState Binder
221221parseUnaryBinder = UnaryBinder <$> C.lexeme (C.parseQualified C.properName) <*> (C.indented *> parseBinder)
222222
223223parseObjectBinder :: P.Parsec String ParseState Binder
224−parseObjectBinder = ObjectBinder <$> C.braces ((C.indented *> parseIdentifierAndBinder) `P.sepBy` (C.indented *> C.comma))
224+parseObjectBinder = ObjectBinder <$> C.braces (C.commaSep (C.indented *> parseIdentifierAndBinder))
225225
226226parseArrayBinder :: P.Parsec String ParseState Binder
227−parseArrayBinder = C.squares $ ArrayBinder <$> ((C.indented *> parseBinder) `P.sepBy` (C.indented *> C.comma))
227+parseArrayBinder = C.squares $ ArrayBinder <$> (C.commaSep (C.indented *> parseBinder))
228228 <*> P.optionMaybe (C.indented *> C.colon *> C.indented *> parseBinder)
229229
230230parseNamedBinder :: P.Parsec String ParseState Binder