What Haskell users are actively maintaining or deving software using ghc <8
Ben Gamari
ben at smart-cactus.org
Thu May 28 05:06:37 UTC 2020
Henning Thielemann <lemming at henning-thielemann.de> writes:
> On Wed, 27 May 2020, Joseph C. Sible wrote:
>
>> On Wed, May 27, 2020 at 11:09 AM Henning Thielemann
>> <lemming at henning-thielemann.de> wrote:
>>>
>>> I use 7.4.2 regularly. I like to avoid upgrading to 7.10 and above because
>>> I do not want to run into accidental bugs based on "maximum (a,b)".
>>
>> IMO, avoiding "instance Foldable ((,) a)" isn't really a good reason
>> to not upgrade. You're giving up a lot of bug fixes and other
>> improvements just to avoid accidentally writing code that a linter
>> will easily catch.
>
> I am not giving up anything, because I test my code against both 7.4.2 AND
> newer GHC versions.
>
> What linter can easily catch "instance Foldable ((,) a)"?
>
> GHC cannot warn about it, so far.
>
> Another solution would be to separate 'base' from GHC. I could then work
> with a patched 'base' with forbidden "instance Foldable ((,) a)".
For what it's worth, I suspect there are a few solutions to the
problem of disallowing use of particular instances which may be
close-at-hand:
* Providing a compiler flag or pragma to "poison" an instance,
locally preventing the compiler from using it as evidence; this would
require a GHC proposal and may not be entirely trivial to implement,
but it's certainly feasible.
* Providing a GHC source plugin that would look for dictionaries of
type (e.g.) Foldable ((,) a) in the desugared Core of a module and
report them as errors
* Using GHC's HIE output to implement a linter which would identify
above-mentioned dictionaries.
Cheers,
- Ben
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 487 bytes
Desc: not available
URL: <http://mail.haskell.org/pipermail/libraries/attachments/20200528/b5701663/attachment-0001.sig>
More information about the Libraries
mailing list