<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">I do plan on turning Joachim's recent suggestion into a separate proposal, and then to modify #99. But the modification would remove only the bit about classes, not the feature overall. I don't have time to do this now, though -- will do next week.<div class=""><br class=""></div><div class="">Richard<br class=""><div><br class=""><blockquote type="cite" class=""><div class="">On May 24, 2018, at 1:54 PM, Iavor Diatchki <<a href="mailto:iavor.diatchki@gmail.com" class="">iavor.diatchki@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class="">Hello,<div class=""><br class=""></div><div class="">based on the discussion so far, it seems that #99 in its current form might not be exactly what we want, so I'd say that we should reject it for the moment.   Overall, I agree that it would be nice to come up with a consistent notation for things that are currently happening in GHC but we can't write, so perhaps we could revisit this with a revised proposal at a later time?</div><div class=""><br class=""></div><div class="">-Iavor</div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><br class=""></div></div><br class=""><div class="gmail_quote"><div dir="ltr" class="">On Sat, May 5, 2018 at 8:48 PM Joachim Breitner <<a href="mailto:mail@joachim-breitner.de" class="">mail@joachim-breitner.de</a>> wrote:<br class=""></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br class="">
<br class="">
Am Mittwoch, den 02.05.2018, 16:10 -0400 schrieb Richard Eisenberg:<br class="">
> Joachim, you are always a fount of interesting ideas.<br class="">
> <br class="">
> > On May 2, 2018, at 2:51 PM, Joachim Breitner <mail@joachim-breitner<br class="">
> > .de> wrote:<br class="">
> > <br class="">
> >   class C k (a : k) where meth :: a<br class="">
> >   meth :: forall {k} a. C k a -> k -> Constraint<br class="">
> <br class="">
> I think this is brilliant. But not only for this proposal! Imagine<br class="">
> this:<br class="">
> <br class="">
> class Num a where<br class="">
>   fromInteger :: Integer -> a<br class="">
> <br class="">
> fromInteger :: Integer -> forall a. Num a => a<br class="">
> <br class="">
> If we do that, then #129 is essentially solved, at no further cost to<br class="">
> anyone. (Note that in all Haskell98-style code, no one will ever be<br class="">
> able to notice the changed type of fromInteger.)<br class="">
> <br class="">
> This approach also allows for the possibility of reordering<br class="">
> quantified type variables for Haskell98-style constructors, if anyone<br class="">
> should want to do it.<br class="">
> <br class="">
> And it allows for updated types (including quantified variable<br class="">
> ordering, etc.) for record selectors.<br class="">
> <br class="">
> And it allows (maybe?) for giving good types to GADT record<br class="">
> selectors:<br class="">
> <br class="">
> data X a where<br class="">
>   Foo :: { bar :: Int } -> X Int<br class="">
>   Quux :: { bar :: Bool } -> X Bool<br class="">
> bar :: X a -> a<br class="">
> <br class="">
> GHC currently rejects the declaration for X, but it could be accepted<br class="">
> if only we could specify the correct type of bar. And now we can. I<br class="">
> don't particularly want to cook up the typing rules here, but I don't<br class="">
> think I'm totally crazy.<br class="">
> <br class="">
> GADT record selectors aside, the rule for these could be that the<br class="">
> top-level type signature must be equivalent w.r.t. the subtype<br class="">
> relation with the original type signature. That is, if the new<br class="">
> signature is t1 and the old was t2, then t1 <: t2 and t2 <: t1. Easy<br class="">
> enough to check for. The implementation would probably do a little<br class="">
> worker/wrapper stunt.<br class="">
<br class="">
I smell a new proposal… what does this mean for #99? Will you want to<br class="">
revise it?<br class="">
<br class="">
Cheers,<br class="">
Joachim<br class="">
-- <br class="">
Joachim Breitner<br class="">
  <a href="mailto:mail@joachim-breitner.de" target="_blank" class="">mail@joachim-breitner.de</a><br class="">
  <a href="http://www.joachim-breitner.de/" rel="noreferrer" target="_blank" class="">http://www.joachim-breitner.de/</a><br class="">
_______________________________________________<br class="">
ghc-steering-committee mailing list<br class="">
<a href="mailto:ghc-steering-committee@haskell.org" target="_blank" class="">ghc-steering-committee@haskell.org</a><br class="">
<a href="https://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-steering-committee" rel="noreferrer" target="_blank" class="">https://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-steering-committee</a><br class="">
</blockquote></div>
_______________________________________________<br class="">ghc-steering-committee mailing list<br class=""><a href="mailto:ghc-steering-committee@haskell.org" class="">ghc-steering-committee@haskell.org</a><br class="">https://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-steering-committee<br class=""></div></blockquote></div><br class=""></div></body></html>