@@ -24,8 +24,7 @@ dataConstructorDefP = DataConstructorDef <$> capitalizedIdentifier <*> many data
25-- data *Either a b* = Left *a* | Right *b*
25-- data *Either a b* = Left *a* | Right *b*
26dataConstructorDefArgP :: Parser DataConstructorDefArg
26dataConstructorDefArgP :: Parser DataConstructorDefArg
27−dataConstructorDefArgP = parens (DataConstructorDefTypeConstructorArg <$> typeConstructorP) <|>
27+dataConstructorDefArgP = DataConstructorDefTypeConstructorArg <$> (monoTypeConstructorP <|> parens typeConstructorP) <|>
28− DataConstructorDefTypeConstructorArg <$> typeConstructorP <|>
29 DataConstructorDefTypeVarNameArg <$> uncapitalizedIdentifier
28 DataConstructorDefTypeVarNameArg <$> uncapitalizedIdentifier
31-- relation{a Int} in type construction (no tuples parsed)
30-- relation{a Int} in type construction (no tuples parsed)
@@ -44,9 +43,8 @@ attributeAndTypeNameP = AttributeAndTypeNameExpr <$> identifier <*> typeConstruc
44-- *Either Int Text*, *Int*
43-- *Either Int Text*, *Int*
45typeConstructorP :: Parser TypeConstructor
44typeConstructorP :: Parser TypeConstructor
46typeConstructorP = relationTypeConstructorP <|>
45typeConstructorP = relationTypeConstructorP <|>
47− TypeVariable <$> uncapitalizedIdentifier <|>
48− ADTypeConstructor <$> capitalizedIdentifier <*> many (parens typeConstructorP <|>
46+ ADTypeConstructor <$> capitalizedIdentifier <*> many (monoTypeConstructorP <|> parens typeConstructorP) <|>
49− monoTypeConstructorP)
47+ monoTypeConstructorP
51monoTypeConstructorP :: Parser TypeConstructor
49monoTypeConstructorP :: Parser TypeConstructor
52monoTypeConstructorP = ADTypeConstructor <$> capitalizedIdentifier <*> pure [] <|>
50monoTypeConstructorP = ADTypeConstructor <$> capitalizedIdentifier <*> pure [] <|>