id,summary,reporter,owner,description,type,status,priority,milestone,component,version,resolution,keywords,cc,os,architecture,failure,difficulty,testcase,blockedby,blocking,related
3378,[Patch] Make 'group' into a special ID when TransformListComp is on,batterseapower,,"{{{
-- >>>
| 'then' exp 'by' exp       { LL $ \leftStmts -> (mkTransformByStmt (reverse leftStmts) $2 $4) }
| 'then' 'group' 'by' exp              { LL $ \leftStmts -> (mkGroupByStmt (reverse leftStmts) $4) }
-- <<<
-- These two productions deliberately have a shift-reduce conflict. I have made 'group' into a special_id,
-- which means you can enable TransformListComp while still using Data.List.group. However, this makes the two
-- productions ambiguous. I've set things up so that Happy chooses to resolve the conflict in that case by
-- choosing the ""group by"" variant, which is what we want.
--
-- This is rather dubious: the user might be confused as to how to parse this statement. However, it is a good
-- practical choice. NB: Data.List.group :: [a] -> [[a]], so using the first production would not even type check
-- if /that/ is the group function we conflict with.
}}}

Take it or leave it :). Probably a win in practice.",feature request,closed,normal,,Compiler,6.10.4,fixed,,ndmitchell@… batterseapower@…,Unknown/Multiple,Unknown/Multiple,,Unknown,,,,
