Opened 4 years ago

Closed 4 years ago

Last modified 4 years ago

#11233 closed task (fixed)

Improve optimisation of pattern synonym matching

Reported by: mpickering Owned by:
Priority: normal Milestone: 8.0.1
Component: Compiler Version: 7.10.3
Keywords: newcomer, PatternSynonyms Cc:
Operating System: Unknown/Multiple Architecture: Unknown/Multiple
Type of failure: None/Unknown Test Case:
Blocked By: Blocking:
Related Tickets: #11224 Differential Rev(s):
Wiki Page:


Currently GHC does a very poor job of optimising pattern matches which include pattern synonyms.

It would be good to modify sameGroup in compiler/deSugar/Match.hs to be a lot smarter about when it is safe to group two pattern matches together.

Grouping was originally disabled as it is a bit trickier than originally thought. See #11224 for details.

The rule was originally to group two pattern matches together PgSyn p1 and PgSyn p2 when p1 == p2. This rule wasn't safe when p1 had a polymorphic return type and thus could have a different type on each branch even though syntactically identical. A good solution to this ticket would come up with a smarter rule about when it is and isn't safe to group two together in the same spirit as the more complicated rules for view patterns.

Change History (2)

comment:1 Changed 4 years ago by mpickering

Resolution: fixed
Status: newclosed

comment:2 Changed 4 years ago by thomie

Milestone: 8.0.1
Note: See TracTickets for help on using tickets.