diff options
| author | George Giorgidze <giorgidze@gmail.com> | 2011-11-02 23:43:36 +0100 |
|---|---|---|
| committer | Simon Peyton Jones <simonpj@microsoft.com> | 2011-11-17 08:38:31 +0000 |
| commit | 5cfc2680f00123fb0b9f57ee8a154c9ae90f3efc (patch) | |
| tree | 9cab503136739b595cc09c7819c721828a3d089a /compiler/hsSyn | |
| parent | b4d08f19f3da0cafefcb8281ef844d8c5f96abec (diff) | |
| download | haskell-5cfc2680f00123fb0b9f57ee8a154c9ae90f3efc.tar.gz | |
Removing the default grouping clause from the SQL-like comprehension notation ;
Diffstat (limited to 'compiler/hsSyn')
| -rw-r--r-- | compiler/hsSyn/HsExpr.lhs | 19 | ||||
| -rw-r--r-- | compiler/hsSyn/HsUtils.lhs | 17 |
2 files changed, 11 insertions, 25 deletions
diff --git a/compiler/hsSyn/HsExpr.lhs b/compiler/hsSyn/HsExpr.lhs index 7b814e14bb..af2de9f87b 100644 --- a/compiler/hsSyn/HsExpr.lhs +++ b/compiler/hsSyn/HsExpr.lhs @@ -943,12 +943,8 @@ data StmtLR idL idR deriving (Data, Typeable) data TransForm -- The 'f' below is the 'using' function, 'e' is the by function - = ThenForm -- then f or then f by e (depending on trS_by) - | GroupFormU -- group using f or group using f by e (depending on trS_by) - | GroupFormB -- group by e - -- In the GroupByFormB, trS_using is filled in with - -- 'groupWith' (list comprehensions) or - -- 'groupM' (monad comprehensions) + = ThenForm -- then f or then f by e (depending on trS_by) + | GroupForm -- then group using f or then group by e using f (depending on trS_by) deriving (Data, Typeable) \end{code} @@ -1078,12 +1074,7 @@ expressions: => guard exp >> [ body | stmts ] -Grouping/parallel statements require the 'Control.Monad.Group.groupM' and -'Control.Monad.Zip.mzip' functions: - - [ body | stmts, then group by e, rest] - => - groupM [ body | stmts ] >>= \bndrs -> [ body | rest ] +Parallel statements require the 'Control.Monad.Zip.mzip' function: [ body | stmts1 | stmts2 | .. ] => @@ -1126,9 +1117,7 @@ pprTransStmt :: OutputableBndr id => Maybe (LHsExpr id) -> SDoc pprTransStmt by using ThenForm = sep [ ptext (sLit "then"), nest 2 (ppr using), nest 2 (pprBy by)] -pprTransStmt by _ GroupFormB - = sep [ ptext (sLit "then group"), nest 2 (pprBy by) ] -pprTransStmt by using GroupFormU +pprTransStmt by using GroupForm = sep [ ptext (sLit "then group"), nest 2 (pprBy by), nest 2 (ptext (sLit "using") <+> ppr using)] pprBy :: OutputableBndr id => Maybe (LHsExpr id) -> SDoc diff --git a/compiler/hsSyn/HsUtils.lhs b/compiler/hsSyn/HsUtils.lhs index 207c2bc189..358f8bbc3e 100644 --- a/compiler/hsSyn/HsUtils.lhs +++ b/compiler/hsSyn/HsUtils.lhs @@ -51,7 +51,7 @@ module HsUtils( -- Stmts mkTransformStmt, mkTransformByStmt, mkExprStmt, mkBindStmt, mkLastStmt, - emptyTransStmt, mkGroupUsingStmt, mkGroupByStmt, mkGroupByUsingStmt, + emptyTransStmt, mkGroupUsingStmt, mkGroupByUsingStmt, emptyRecStmt, mkRecStmt, -- Template Haskell @@ -243,10 +243,9 @@ mkHsIf c a b = HsIf (Just noSyntaxExpr) c a b mkNPat lit neg = NPat lit neg noSyntaxExpr mkNPlusKPat id lit = NPlusKPat id lit noSyntaxExpr noSyntaxExpr -mkTransformStmt :: [LStmt idL] -> LHsExpr idR -> StmtLR idL idR -mkTransformByStmt :: [LStmt idL] -> LHsExpr idR -> LHsExpr idR -> StmtLR idL idR +mkTransformStmt :: [LStmt idL] -> LHsExpr idR -> StmtLR idL idR +mkTransformByStmt :: [LStmt idL] -> LHsExpr idR -> LHsExpr idR -> StmtLR idL idR mkGroupUsingStmt :: [LStmt idL] -> LHsExpr idR -> StmtLR idL idR -mkGroupByStmt :: [LStmt idL] -> LHsExpr idR -> StmtLR idL idR mkGroupByUsingStmt :: [LStmt idL] -> LHsExpr idR -> LHsExpr idR -> StmtLR idL idR emptyTransStmt :: StmtLR idL idR @@ -254,12 +253,10 @@ emptyTransStmt = TransStmt { trS_form = undefined, trS_stmts = [], trS_bndrs = [ , trS_by = Nothing, trS_using = noLoc noSyntaxExpr , trS_ret = noSyntaxExpr, trS_bind = noSyntaxExpr , trS_fmap = noSyntaxExpr } -mkTransformStmt ss u = emptyTransStmt { trS_form = ThenForm, trS_stmts = ss, trS_using = u } -mkTransformByStmt ss u b = emptyTransStmt { trS_form = ThenForm, trS_stmts = ss, trS_using = u, trS_by = Just b } -mkGroupByStmt ss b = emptyTransStmt { trS_form = GroupFormB, trS_stmts = ss, trS_by = Just b } -mkGroupUsingStmt ss u = emptyTransStmt { trS_form = GroupFormU, trS_stmts = ss, trS_using = u } -mkGroupByUsingStmt ss b u = emptyTransStmt { trS_form = GroupFormU, trS_stmts = ss - , trS_by = Just b, trS_using = u } +mkTransformStmt ss u = emptyTransStmt { trS_form = ThenForm, trS_stmts = ss, trS_using = u } +mkTransformByStmt ss u b = emptyTransStmt { trS_form = ThenForm, trS_stmts = ss, trS_using = u, trS_by = Just b } +mkGroupUsingStmt ss u = emptyTransStmt { trS_form = GroupForm, trS_stmts = ss, trS_using = u } +mkGroupByUsingStmt ss b u = emptyTransStmt { trS_form = GroupForm, trS_stmts = ss, trS_using = u, trS_by = Just b } mkLastStmt expr = LastStmt expr noSyntaxExpr mkExprStmt expr = ExprStmt expr noSyntaxExpr noSyntaxExpr placeHolderType |
