Higher order Patterns in Rewrite Rules
summary
Adds actual higher-order pattern matching to GHC’s rewrite-rule matcher by changing Rules.hs match to recognize template variables applied to distinct local binders, build a RuleSubstitution that inserts lambdas via mkCoreLams, and avoid full beta expansion of the target. Prototype compiles, lands as a merge request after a GHC proposal, and is slated for GHC 9.8. Basic implementation takes about two days; polishing spec and tests takes much longer; enables concatMap fusion work.
AI-written summary · about
chapters (10)
- 0:00Jaro's introduction
- 0:50Rewrite rules in Haskell
- 2:47Motivation for extending rules
- 6:14Contributing to GHC
- 9:37GHC codebase dive
- 14:07Beta expansion in matching
- 16:02Feedback and GHC proposal
- 17:28Writing GHC proposal
- 18:15Refining merge request
- 20:01Future work and conclusion
related talks
32mVerifying Haskell's Rewrite Rules based on Polymorphic Rewriting Theory
44mRevisiting pattern match overlap checks in Haskell
08mCompiling pattern matching to in-place modifications
55mDeforestation and Program Fusion
25mRewriting Macros on the Fly: A Modular Approach to Administrative Reduction During(…)
27mAugmenting Rewrite Rule Sets via Knuth-Bendix Completion
29mSemantic Transformation Framework for Rewriting Rules
15mMonadification of Attribute Grammars
