<div dir="ltr">I have certainly been confused by the term 'tuple' used in D countless times.<div style>It seems to exist in a variety of different contexts, and every time I think I understood it, I realise I'm probably wrong some time later.</div>
<div style>There seems to be poor/no documentation comparing/distinguishing various D tuples, also, there seems to be no real explicit syntax, which makes it hard to recognise.</div><div style>I can kinda handle a Tuple template, and then there are these type tuples, and then expression tuples? What is the relationship between these? Are they compatible? How do I distinguish them?</div>
<div style><br></div><div style>Someone that understand what they're talking about should take some time to write a comprehensive article on the matter :)</div><div style>Some of the things I have read seem to presume that I already know what it's talking about, and as a result, lead to dismissing or misunderstanding the article.</div>
<div style><br></div><div style>I think the practical take-away from my experience is that it ends up as one of those 'too hard' concepts, that I develop a tendency to actively avoid dealing with because it's confused me a number of times.</div>
<div style>I typically just start typing stuff and hope it works. And if it doesn't I fiddle with it until it eventually does (or I give up), and I never *really* understand why.</div><div style>I'll bet I'm not the only one...</div>
</div><div class="gmail_extra"><br><br><div class="gmail_quote">On 27 May 2013 10:25, Jonathan M Davis <span dir="ltr"><<a href="mailto:jmdavisProg@gmx.com" target="_blank">jmdavisProg@gmx.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">On Sunday, May 26, 2013 22:38:24 Diggory wrote:<br>
> On Sunday, 26 May 2013 at 15:48:00 UTC, Russel Winder wrote:<br>
> > I wonder if people coming to D, looking for information about<br>
> > tuples,<br>
> > will get confused by <a href="http://dlang.org/tuple.html" target="_blank">http://dlang.org/tuple.html</a> which seems to<br>
> > tell<br>
> > people they have to "roll their own", and<br>
> > <a href="http://dlang.org/phobos/std_typecons.html" target="_blank">http://dlang.org/phobos/std_typecons.html</a> which tells people<br>
> > they have<br>
> > been pre-rolled in the standard library?<br>
><br>
> I found this especially confusing because the built-in Tuple is<br>
> defined differently.<br>
><br>
> The Tuple in that example is equivalent to the definition of<br>
> TypeTuple, and yet TypeTuple is supposedly specific to types<br>
> while that example (as so by implication TypeTuple) apparently<br>
> works just as well with other contents.<br>
><br>
> On top of that Tuple is the one that only works with types - any<br>
> string expressions are extracted and used as names... Surely a<br>
> tuple which can only store types should be a TypeTyple and a<br>
> tuple which can store anything should be a Tuple.<br>
<br>
</div></div>I really wish that the term tuple didn't get used with the built-in tuples /<br>
TypeTuples. They _aren't_ tuples. They're similar, but they don't nest, and<br>
they cause a lot of confusion with std.typecons.Tuple. And they're only<br>
compile-time constructs to boot.<br>
<span class="HOEnZb"><font color="#888888"><br>
- Jonathan M Davis<br>
</font></span></blockquote></div><br></div>