@@ -112,8 +112,7 @@ ungroupP = do
112112extendP :: RelationalMarkerExpr a => Parser (RelationalExprBase a -> RelationalExprBase a)
113113extendP = do
114114 reservedOp ":"
115− tupleExpr <- braces extendTupleExpressionP
116− return $ Extend tupleExpr
115+ Extend <$> braces extendTupleExpressionP
117116
118117semijoinP :: RelationalMarkerExpr a => Parser (RelationalExprBase a -> RelationalExprBase a -> RelationalExprBase a)
119118semijoinP = do
@@ -169,17 +168,15 @@ restrictionPredicateP = makeExprParser predicateTerm predicateOperators
169168 <|> relationalBooleanExprP
170169
171170relationalBooleanExprP :: RelationalMarkerExpr a => Parser (RestrictionPredicateExprBase a)
172−relationalBooleanExprP = do
173− relexpr <- parens relExprP <|> relTerm
171+relationalBooleanExprP =
174172 --we can't actually detect if the type is relational boolean, so we just pass it to the next phase
175− return $ RelationalExprPredicate relexpr
173+ RelationalExprPredicate <$> (parens relExprP <|> relTerm)
176174
177175restrictionAttributeEqualityP :: RelationalMarkerExpr a => Parser (RestrictionPredicateExprBase a)
178176restrictionAttributeEqualityP = do
179177 attributeName <- identifier
180178 reservedOp "="
181− atomexpr <- atomExprP
182− return $ AttributeEqualityPredicate attributeName atomexpr
179+ AttributeEqualityPredicate attributeName <$> atomExprP
183180
184181restrictionAtomExprP :: RelationalMarkerExpr a=> Parser (RestrictionPredicateExprBase a) --atoms which are of type "boolean"
185182restrictionAtomExprP = do
@@ -196,8 +193,7 @@ attributeExtendTupleExpressionP :: RelationalMarkerExpr a => Parser (ExtendTuple
196193attributeExtendTupleExpressionP = do
197194 newAttr <- identifier
198195 reservedOp ":="
199− atom <- atomExprP
200− return $ AttributeExtendTupleExpr newAttr atom
196+ AttributeExtendTupleExpr newAttr <$> atomExprP
201197
202198atomExprP :: RelationalMarkerExpr a => Parser (AtomExprBase a)
203199atomExprP = consumeAtomExprP True
@@ -213,8 +209,7 @@ consumeAtomExprP consume = try functionAtomExprP <|>
213209attributeAtomExprP :: Parser (AtomExprBase a)
214210attributeAtomExprP = do
215211 _ <- string "@"
216− attrName <- identifier
217− return $ AttributeAtomExpr attrName
212+ AttributeAtomExpr <$> identifier
218213
219214nakedAtomExprP :: Parser (AtomExprBase a)
220215nakedAtomExprP = NakedAtomExpr <$> atomP
@@ -234,11 +229,8 @@ atomP = stringAtomP <|>
234229 boolAtomP
235230
236231functionAtomExprP :: RelationalMarkerExpr a => Parser (AtomExprBase a)
237−functionAtomExprP = do
238− funcName <- identifier
239− argList <- parens (sepBy atomExprP comma)
240− marker <- parseMarkerP
241− return $ FunctionAtomExpr funcName argList marker
232+functionAtomExprP =
233+ FunctionAtomExpr <$> identifier <*> parens (sepBy atomExprP comma) <*> parseMarkerP
242234
243235relationalAtomExprP :: RelationalMarkerExpr a => Parser (AtomExprBase a)
244236relationalAtomExprP = RelationAtomExpr <$> relExprP