
29 Mar
2018
29 Mar
'18
12:12 p.m.
Hello Ben,
We came up with a "minimal" example that at least is self contained and triggers the problem; `runghc Minimal.hs` should finish with about 5GB of RAM.
Hmm, with 8.2 I'm seeing a peak memory usage of 3.5 GB, with that peak occurring during renaming, not desugaring (when exhaustiveness checking happens). Are you certain that the exhaustiveness checker is the responsible party?
Not at all! In fact, I ran some comparisons with "-ddump-phases" and plotted those. I'm attaching the graphs here. From base to "added E" we added 16 more pattern matches, then each "added" phase is an additional 16 pattern matches. The simplifier stands out there. I couldn't run a bigger case as I had hit the ceiling of my machine. Cheers, Victor