
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
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
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
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
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
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@haskell.org
https://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-steering-committee
_______________________________________________ ghc-steering-committee mailing list ghc-steering-committee@haskell.org https://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-steering-committee