Naive question:
Would it be "evil" or otherwise complicated to assume that (~) is
heterogeneous only in the _presence_ of kind constraint? Or only when
the kind can be inferred?
--
Cheers
Michal
On 23/11/2015 03:00, Richard Eisenberg wrote:
>
> * Should (~), as written in user code, require the kinds of its arguments to
> be equal?
> We can see that the kind of the type variable kproxy should be (KProxy k).
> But we still have to infer the kind of the occurrence of 'KP on the left.
> HEAD sees the kind of kproxy and infers that 'KP should have kind (KProxy k).
> My branch, on the other hand, doesn't have any reason to constrain the kind
> of 'KP, and so it gets (KProxy Any), which quickly causes trouble.
>
> The fix is easy: add a kind signature.
>
> I see two ways forward, corresponding to the choices for the kind of (~)
> above:
>
> 1. Make (~) homogeneous and introduce a new constraint (~~) that is like (~)
> but heterogeneous. We resign ourselves to explaining the technical, subtle
> difference between (~) and (~~) into perpetuity.
>
> 2. Make (~) heterogeneous. Some people will have to add kind annotations to
> their code to port from GHC 7.10 to GHC 8.0. But these kind annotations will
> be fully backward-compatible, and won't require CPP, or warnings, or any
> other bother. We may have to explain why kind inference around (~) is weaker
> than it was before.
_______________________________________________
ghc-devs mailing list
[email protected]
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs