[Patch] Make 'group' into a special ID when TransformListComp is on
-- >>>
| '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.
Trac metadata
Trac field | Value |
---|---|
Version | 6.10.4 |
Type | FeatureRequest |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | Compiler |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | batterseapower@hotmail.com, ndmitchell@gmail.com |
Operating system | |
Architecture |