
Chris Smith
On Fri, Oct 8, 2021 at 10:51 AM Ben Gamari
wrote: In my mind the fundamental problem with this approach is that it means that a program's acceptance by the compiler hinges upon pragmas. This is a rather significant departure from the status quo, where one can remove all pragmas and still end up with a well-formed program. In this sense, pragmas aren't really part of the Haskell language but are rather bits of interesting metadata that the compiler may or may not pay heed to.
I don't believe this is really the status quo. In particular, the pragmas relating to overlapping instances definitely do affect whether a program type-checks or not.
Yes, this is a fair point. Moreover, the same can be said of LANGUAGE pragmas more generally. I will rephrase my statement to reflect what was in my head when I initially wrote it:
In my mind the fundamental problem with this approach is that it means that a program's acceptance by the compiler hinges upon INLINE pragmas. This is a rather significant departure from the status quo, where one can remove all INLINE, INLINEABLE, RULES, and SPECIALISE pragmas and still end up with a well-formed program.
These pragmas all share the property that they don't change program semantics but rather merely affect operational behavior. Consequently, they should not change whether a program should be accepted. Cheers, - Ben