<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Wed, Feb 24, 2016 at 1:04 PM, Henrik Nilsson <span dir="ltr"><<a href="mailto:Henrik.Nilsson@nottingham.ac.uk" target="_blank">Henrik.Nilsson@nottingham.ac.uk</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<span class=""><br>
<br>
On 02/24/2016 11:08 AM, Fumiaki Kinoshita wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Thinking tuples of as multi-element containers is not recommended. A<br>
tuple (a, b) is, a pair of one 'a' and one 'b';<br>
</blockquote>
<br></span>
Which, to me, at least, very much sounds like a container of two<br>
elements?<br></blockquote><div><br></div><div>You can use essentially the same argument to say that [a] sounds like a container of any number of elements, therefore there shouldn't be anything wrong with [1, 'foo']. It's not uncommon in programming for "what a thing naively sounds like" to be quite different from "what a thing actually is". <i>Tuples are not lists</i>.</div><div><br></div><div>I agree that there's room for confusion, but there is room for confusion in <i>a lot</i> of parts of Haskell, especially for people who bring a lot of preconceived notions with them. We should try to make the transition easier for them, but to me that looks a lot more like "really good error messages" and less like pointedly ignoring the structure of types that might be confusing.</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Seriosuly, if, as a result of tuples being instances of Functor and<br>
Foldable etc., the end result is confusion to the point that<br>
many no longer understand a tuple simply as a container of a certain<br>
number of elements, then that's another case in point against<br>
this whole design. (In particular the Foldable part: while I personally<br>
don't find the functor instances particularly compelling or useful,<br>
they seem less likely to seriously bite.)<span class=""><br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
as Foldable works on<br>
values pointed by the rightmost type argument, 1 should be the only<br>
reasonable result of 'length'.<br>
<br>
     data TwoThree a b = TwoThree a a b b b<br>
<br>
What should 'length (TwoThree "Foo" "Bar" 0 1 2)' be?<br>
</blockquote>
<br></span>
A static type error, perhaps?<br>
<br>
(As indeed it will be unless the appropriate instances are made<br>
for TwoThree. But I am guessing we should understand TwoThree<br>
as a tuple here.)<span class=""><br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Looking at only<br>
the expression, 5 might seem to make sense, but is not meaningful<br>
considering the type.<br>
<br>
</blockquote>
<br></span>
Best,<br>
<br>
/Henrik<br>
-- <br>
Henrik Nilsson<br>
School of Computer Science<br>
The University of Nottingham<br>
<a href="mailto:nhn@cs.nott.ac.uk" target="_blank">nhn@cs.nott.ac.uk</a><br>
<br>
<br>
<br>
<br>
This message and any attachment are intended solely for the addressee<br>
and may contain confidential information. If you have received this<br>
message in error, please send it back to me, and immediately delete it. <br>
Please do not use, copy or disclose the information contained in this<br>
message or in any attachment.  Any views or opinions expressed by the<br>
author of this email do not necessarily reflect the views of the<br>
University of Nottingham.<br>
<br>
This message has been checked for viruses but the contents of an<br>
attachment may still contain software viruses which could damage your<br>
computer system, you are advised to perform your own checks. Email<br>
communications with the University of Nottingham may be monitored as<br>
permitted by UK legislation.<div class="HOEnZb"><div class="h5"><br>
<br>
_______________________________________________<br>
Libraries mailing list<br>
<a href="mailto:Libraries@haskell.org" target="_blank">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-bin/mailman/listinfo/libraries</a><br>
</div></div></blockquote></div><br></div></div>