<div dir="ltr">- The message I was directly responding to included the phrases 'instances we think a "better Haskell" wouldn't have' and 'doing what we don't want before someone else has a chance to'. That's what I was responding to when I said that the instances are useful.<br>- You're trying to establish an analogy between these tuple instances and non-law-abiding instances, but that analogy really doesn't work. These are the only law-abiding instances that the types can possibly have. When I claim something is a Monad, I'm saying that if the compiler knew how to take a proof, I'd be able to provide one. When you claim tuples are unbiased, there is no analogous statement. You can't say that you'd be able to provide a proof that tuples are unbiased, because they <i>aren't</i> unbiased.<br>- A lot of these arguments are taking the form "let's have unbiased tuples", but the actual impact of just removing the instances wouldn't be unbiased tuples, it would be a crippled biased tuple. Getting rid of the instances wouldn't make tuples any less biased, it would just take away useful functionality. Suggestions like Vladislav's of implementing an actual unbiased tuple are more reasonable (though as pointed out, they'd break <i>tons</i> of code, so still not that reasonable).</div><div class="gmail_extra"><br><div class="gmail_quote">On Sat, Apr 8, 2017 at 4:28 PM, Ben Franksen <span dir="ltr"><<a href="mailto:ben.franksen@online.de" target="_blank">ben.franksen@online.de</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">Am 07.04.2017 um 00:48 schrieb Nathan Bouscal:<br>
> It *is* actually a useful instance and it is used in practice. It's not<br>
> that better Haskell wouldn't have an biased pair type with these instances,<br>
> it's that it would *also* have an unbiased one with the instances that such<br>
> a type could support.<br>
<br>
</span>Nobody (I think) claimed that the biased type isn't useful. We merely<br>
discuss whether it would not be more useful to define new types for that<br>
with names that convey the intent, and leave (,) and Either unbiased as<br>
their name (and special notation) suggests.<br>
<span class=""><br>
> The issue seems to be that people don't like the<br>
> biased type having special syntax that wrongly gives an unknowing reader<br>
> the impression that the type is unbiased.<br>
<br>
</span>This is not the only reason, see above.<br>
<span class=""><br>
> This is a reasonable position,<br>
> but getting rid of the tuple instances isn't a reasonable way to act on<br>
> that position: 1) they're going to be defined anyway,<br>
<br>
</span>Would you say the same for non-law-abiding instances for, say, class Monad?<br>
<span class=""><br>
> but also 2) it's not<br>
> helpful to just pretend the type is unbiased when it isn't.<br>
<br>
</span>We are used to pretend a lot in Haskell. We cannot capture all<br>
properties in types, but we expect them to hold nevertheless. Are you<br>
saying that this is bad because, well someone is going to come and<br>
define a Monad instance that doesn't obey the laws anyway, so let's not<br>
pretend the Monad laws hold?<br>
<span class=""><br>
> It would be<br>
> coherent to argue for the removal of the special tuple syntax (though<br>
> coherent doesn't mean reasonable; this would break everything), but it's<br>
> not coherent to argue for crippling tuples so we can pretend they're<br>
> something they aren't.<br>
<br>
</span>Pretending that a thing is actually something other than it really is is<br>
the whole idea of high level languages. All data and code are just bits<br>
in the end. You can enforce certain re-interpretations of these bits<br>
using a type system. But what matters is that we intend a Char to be a<br>
character and consciously avoid asking "what it really is" i.e. how it<br>
is represented.<br>
<br>
Cheers<br>
<span class="HOEnZb"><font color="#888888">Ben<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
______________________________<wbr>_________________<br>
Libraries mailing list<br>
<a href="mailto:Libraries@haskell.org">Libraries@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-<wbr>bin/mailman/listinfo/libraries</a><br>
</div></div></blockquote></div><br></div>