nfrisby / frags

Plugin gonna getcha, row types
0 stars 1 forks source link

What should count as progress in `WorkT`? #3

Open nfrisby opened 5 years ago

nfrisby commented 5 years ago

The WorkT monad carries a flag that the frag/constraint simplifier functions set when they have made a meaningful change. This Issue is to pin down what exactly meaningful should mean.

I'm quite confident that the flag is being set too aggressively at the moment. This risks infinite loops, which exhaust one of GHC's counters, leading to a spurious compile-time error: incompleteness.

nfrisby commented 5 years ago

I think #33 will likely shine some light on this.

Edit: Narrator: it did not.

nfrisby commented 5 years ago

My intuition at this point is "any change GHC can't/won't undo" is work. However, now that I (somewhat grumbly) switched interesting ~ constraints to EqFrag, GHC doesn't undo much.

I'm thinking this will be an onerous task to do exhaustively. For now, I'm only planning/hoping to flush out the bugs in this determination one-by-one as we gain more test- and use-cases.