<div dir="ltr"><div>Anyway, for what it's worth the proposer has asked to mark the proposal dormant until the compile-time performance issues can be resolved.</div><div><br></div><div>Thanks everyone for the discussion, we can revisit this if/when the proposal wakes up again.</div><div><br></div><div>Cheers</div><div>Simon<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, 31 Aug 2022 at 20:07, Simon Marlow <<a href="mailto:marlowsd@gmail.com">marlowsd@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>I just checked the proposal and in fact, Eric's 1a option below is what is being proposed. That is, implicit imports don't bring any new instances into scope.</div><div><br></div><div>For me I don't think that actually simplifies things though. Because now, we have a difference in semantics between using an implicit import and an explicit import, and a weird corner case that will surprise people.</div><div><br></div><div>I'm somewhat attracted by option 2, warning about implicit imports. If this is supposed to be a convenience feature during development, I could see that being useful. In a similar vein, I suggested on github that implicit imports could work only for modules outside the current package, which avoids a lot of the implementation complexity because we don't have to extract implicit imports to perform dependency analysis. As a language feature I think that's a terrible design, but as a productivity tool during development it makes some sense - rather like the intention behind the existing hacky feature  in GHCi that the whole proposal is inspired by.  But do we actually want that kind of feature? I'm still not sure really.<br></div><div><br></div><div>Cheers</div><div>Simon<br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, 29 Aug 2022 at 18:00, Eric Seidel <<a href="mailto:eric@seidel.io" target="_blank">eric@seidel.io</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">If the main benefit we expect from this feature is improved development productivity (from not having to jump around to insert temporary imports), I can think of two ways to restrict the feature to keep most of the benefit without dealing with tricky questions like instance imports.<br>
<br>
1a. Never import instances via an implicit import. This limits the usefulness somewhat if you're trying to use an overloaded method, because you might depend on the instances that would come alongside the method. But, it's an easy rule to remember, and our goal is to improve dev productivity, not provide a production-grade solution.<br>
<br>
1b. Always import instances via an implicit import. Same argument as above, but perhaps more friendly to productivity.<br>
<br>
2. Always warn about implicit imports so they mostly stay out of production builds.<br>
<br>
On Mon, Aug 29, 2022, at 11:19, Joachim Breitner wrote:<br>
> Hi Simon,<br>
><br>
> thanks for picking this up.<br>
><br>
> I am similarly torn.<br>
><br>
> Everytime I have to add and then remove Debug.Trace from my import list<br>
> I am annoyed. And especially for quick scripts etc. having less red<br>
> tape to go through seems to be an improvement. So I see the benefit. If<br>
> I’d be creating a programming language afresh, I might be inclined to<br>
> allow that – a qualified identifier is already quite explicit, after<br>
> all!<br>
> (I admit that I still don’t use the latest tooling available, maybe<br>
> someone using LSP for all their Haskell uses might have a different.)<br>
><br>
> On the other hand, this is not a fresh programming language, we have<br>
> lived okish without this so far, and in particular the behavior with<br>
> regard to instances might be sufficient reasons to reject this –<br>
> although not without some regret.<br>
><br>
><br>
> Cheers,<br>
> Joachim<br>
> -- <br>
> Joachim Breitner<br>
>   <a href="mailto:mail@joachim-breitner.de" target="_blank">mail@joachim-breitner.de</a><br>
>   <a href="http://www.joachim-breitner.de/" rel="noreferrer" target="_blank">http://www.joachim-breitner.de/</a><br>
><br>
> _______________________________________________<br>
> ghc-steering-committee mailing list<br>
> <a href="mailto:ghc-steering-committee@haskell.org" target="_blank">ghc-steering-committee@haskell.org</a><br>
> <a href="https://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-steering-committee" rel="noreferrer" target="_blank">https://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-steering-committee</a><br>
_______________________________________________<br>
ghc-steering-committee mailing list<br>
<a href="mailto:ghc-steering-committee@haskell.org" target="_blank">ghc-steering-committee@haskell.org</a><br>
<a href="https://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-steering-committee" rel="noreferrer" target="_blank">https://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-steering-committee</a><br>
</blockquote></div></div>
</blockquote></div>