[ghc-steering-committee] Mind the gap

Cale Gibbard cgibbard at gmail.com
Wed Jul 6 03:51:07 UTC 2022


I can remember quite a few times where GHC presented me with an
incomprehensible and confused-sounding error message, but then the actual
problem was that PolyKinds was off, and upon turning it on, there was no
longer any problem -- it's to the point that enabling PolyKinds is one of
the first things I try if I find myself disagreeing with GHC on whether
something typechecks.

On Tue, 5 Jul 2022 at 23:46, Chris Dornan <chris at chrisdornan.com> wrote:

> I think we can learn to write code for PolyKinds in time, but in my
> experience it is quite disruptive right now, and could sow FUD around the
> new consensus we are trying to build.
>
> My inclination would be to revert to Haskell2010 as the default for
> GHC until we can build confidence around a configuration that we are
> confident won’t be disruptive.
>
> At a minimum I would create ghc2022 = ghc2021 \  {PolyKinds} and make that
> the default for ghc-9.4.
>
> What do y’all think?
>
>
>
> On 5 Jul 2022, at 16:02, Richard Eisenberg <lists at richarde.dev> wrote:
>
> I find that surprising, and disappointing. I think of PolyKinds as largely
> innocuous, except in strange scenarios, which is why PolyKinds is included
> in GHC2021. If that is wrong, perhaps we should consider not including
> PolyKinds in GHC2023...
>
> It would be interesting to learn more about what's going wrong.
>
> Richard
>
> On Jul 5, 2022, at 10:26 AM, Chris Dornan <chris at chrisdornan.com> wrote:
>
> yup, i should have started there—all my recent troubles have come from
> PolyKinds!
>
> On Tue, 5 Jul 2022 at 15:00, Richard Eisenberg <lists at richarde.dev> wrote:
>
>> This is PolyKinds, which generalizes the kind of D, meaning that
>> satisfying the Typeable a superclass constraint of C also requires a
>> Typeable k constraint, where (a :: k).
>>
>> Richard
>>
>> > On Jul 2, 2022, at 12:49 AM, Chris Dornan <chris at chrisdornan.com>
>> wrote:
>> >
>> > Quick quiz: the below Haskell2010 ‘Phantoms' module (also in this Gist:
>> https://gist.github.com/cdornan/f75cd8024434d998c87610cbb7fb6ab3)
>> appears (for me on GHC 9.2.2 and 9.2.3) to not be a GHC2021 module,
>> reporting this error under the latter configuration:
>> >
>> > Phantoms.hs:22:10: error:
>> >    • Could not deduce (Typeable k)
>> >        arising from the superclasses of an instance declaration
>> >      from the context: (C a, Typeable a)
>> >        bound by the instance declaration
>> >        at Phantoms.hs:22:10-36
>> >    • In the instance declaration for ‘S (D a)’
>> >   |
>> > 22 | instance (C a,Typeable a) => S (D a) where smethod = undefined
>> >   |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^
>> >
>> > Phantoms.hs:22:10: error:
>> >    • Could not deduce (Typeable k)
>> >        arising from the superclasses of an instance declaration
>> >      from the context: (C a, Typeable a)
>> >        bound by the instance declaration
>> >        at Phantoms.hs:22:10-36
>> >    • In the instance declaration for ‘S (D a)’
>> >   |
>> > 22 | instance (C a,Typeable a) => S (D a) where smethod = undefined
>> >
>> > The question is which language extension(s) are giving rise to these
>> errors?
>> >
>> > The ‘Phantoms' module is this:
>> >
>> > {-# LANGUAGE DerivingVia #-}
>> >
>> > module Phantoms where
>> >
>> > import Data.Typeable
>> >
>> >
>> > class C a where
>> >  cmethod :: Proxy a -> ()
>> >
>> > class (Show a, Typeable a) => S a where
>> >  smethod :: a -> Int
>> >
>> >
>> > newtype UsingD a = UsingD { getUsingD :: a }
>> >
>> >
>> > newtype D a = D { getD :: Int }
>> >    deriving (Show) via UsingD (D a)
>> >
>> >
>> > instance (C a,Typeable a) => S (D a) where smethod = undefined
>> >
>> > instance (C a,Typeable a) => Show (UsingD a) where showsPrec = undefined
>> >
>> >
>> > instance (C a) => C (D a) where cmethod _ = undefined
>> >
>> > _______________________________________________
>> > ghc-steering-committee mailing list
>> > ghc-steering-committee at haskell.org
>> >
>> https://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-steering-committee
>>
>>
>
> _______________________________________________
> ghc-steering-committee mailing list
> ghc-steering-committee at haskell.org
> https://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-steering-committee
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-steering-committee/attachments/20220705/a9a76e1f/attachment-0001.html>


More information about the ghc-steering-committee mailing list