<div dir="ltr">I agree with rejecting this proposal.  I understand the motivation, but It doesn't feel right to me.  <div><br></div><div>I often want something like 'instance force IsString Text', but in many cases the module will also contain a few places where want to use String, so I wouldn't be able to use 'instance force IsString Text' for the whole module and I'd have to fall back to 'default Text' (which I do).  So there's an odd overlap between 'instance force' and 'default', it would feel strange to have both of these features.  I'm not sure we've fully explored the design space here.<div><br></div><div>"The type of functions with occurrences of Cls that cannot be instantiated" - can this be rigorously defined?  </div><div><br></div><div>In general the approach seems quite ad-hoc. e.g. if I import a function f :: Cls t => t -> Int into a module with `instance force Cls Bool` then it gets instantiated, but instead if I wrapped it in a newtype</div><div><br></div><div>newtype T = T (forall t . Cls t => t -> Int)</div><div>f :: T</div><div><br></div><div>then importing f would not instantiate Cls, presumably?  Defaulting works in both of these cases though.</div><div><br></div><div>Cheers</div><div>Simon</div><div><br></div><div><br></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On 26 April 2017 at 12:45, Manuel M T Chakravarty <span dir="ltr"><<a href="mailto:chak@justtesting.org" target="_blank">chak@justtesting.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">We need to decide whether we like to accept the ”instance force" proposal:<br>
<br>
  <a href="https://github.com/ghc-proposals/ghc-proposals/pull/23" rel="noreferrer" target="_blank">https://github.com/ghc-<wbr>proposals/ghc-proposals/pull/<wbr>23</a><br>
<br>
While I understand and am in favour of the motivation behind the proposal, I like to propose to reject the proposal in its current form.<br>
<br>
My reasons are the following:<br>
<br>
* The proposal is an ad hoc approach to adding additional type constraints to qualified types involving a specific type class.<br>
<br>
* I am against adding the proposed ”instance force” declaration form as its *main* motivation is to simplify error messages and type signatures printed by GHCi — i.e., it is of a diagnostic and informative nature.<br>
<br>
* Something like that does IMHO not belong into the language, but needs to be part of the configuration of the compilation system. In other words, it ought to be a, e.g., compiler option or a language pragma, but not a declaration form.<br>
<br>
In summary, I’d like to suggest to find an alternative means to get GHC to add the additional constraints to simplify diagnostics and type queries without encumbering the language itself.<br>
<br>
Cheers,<br>
Manuel<br>
<br>
______________________________<wbr>_________________<br>
ghc-steering-committee mailing list<br>
<a href="mailto:ghc-steering-committee@haskell.org">ghc-steering-committee@<wbr>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-<wbr>bin/mailman/listinfo/ghc-<wbr>steering-committee</a><br>
</blockquote></div><br></div>