August 21, 2013
On Wednesday, 21 August 2013 at 18:26:42 UTC, Andrei Alexandrescu wrote:
> We much more need to get "type" out of the name. Those aren't types.

I think this is part of the problem. Nobody can agree on what they should be called because it's so hard to classify them. They're not types, they're not values, they're this weird in-between thing that can be either one, or the other, or both. Therefore anything containing Type or Value in the name will not describe exactly what this thing is. Neither will Symbol, nor Expression, as it can contain both of those again, but not exclusively. We may as well call it by some name that is completely unrelated to what it can contain, as it can contain pretty much *everything*. How about KitchenSinkquence?
August 21, 2013
On Wednesday, 21 August 2013 at 17:53:21 UTC, Andrei Alexandrescu wrote:
> There's an inordinate amount of confusion around what we currently call "type tuple" (embodied in std's TypeTuple). I've been furious immediately as I got word that Walter called it that way, and it hasn't failed to make everybody else feel the same over the years.
>
> So: shall we use "template pack" going forward exclusively whenever we refer to that stuff? That way we can unambiguously use "tuple" for "value tuples, i.e. like mini-structs that group values together".
>
> Destroy. I mean criticize.
>
>
>
> Andrei
I'd say go with Seq as has been suggested by some people.

It can't be confused with types, tuples or (un)packing.

It could be extended to ParameterSequence or ParameterSeq or ParamSeq or whatever.


Either way, it doesn't appear to have any glaring problems.
August 21, 2013
On Wednesday, 21 August 2013 at 18:17:03 UTC, David Nadlinger wrote:
>  a) To me, the name suggests that a "template pack" would consist of templates. In this regard, I'd prefer "parameter pack", which also seems to catch on in the C++ community for the (almost, but not entirely dis-)similar C++11 construct.

My backpack isn't full of backs, though...

In all seriousness (assuming I'm capable of being serious), I don't see wording 'template pack' being problematic, assuming that there's really no other way to use them but through templates (which AFAIK they can't). The word 'parameter' overlaps somewhat in my head with the 'Params' DDoc command, and really just seems to be uber general with respect to the word parameterization.

If you look at this:

http://en.cppreference.com/w/cpp/language/parameter_pack

... there's a qualification of the concept 'parameter pack' on the very first line: '*template* parameter pack'. This to me is indicative that someone realized that the reader, having little other experience with this feature in C++ (else why would they be reading the article?) might be initially confused if the first phrase they encountered wasn't qualified by the word 'template', because that's what the feature was meant to be used in the context of.

> [...]
> 
> Personally, I like using "Seq" as the name for the constructor template, as do a few other of the GitHub/NG regulars, so maybe "(parameter/variadic/…) sequence" would be an alternative worth discussing?

I'm just... reaaaalllyyyy uncomfortable with anything of the form [name-used-in-other-feature-of-language-that-existed-back-in-C] [collection-of-whatever-the-previous-word-was].

> In any case, I'd be fine with almost any color for the bike shed, as long as it is not the current one. ;)
>
> David

Blue!
August 21, 2013
On 8/21/13 11:36 AM, Meta wrote:
> On Wednesday, 21 August 2013 at 18:26:42 UTC, Andrei Alexandrescu wrote:
>> We much more need to get "type" out of the name. Those aren't types.
>
> I think this is part of the problem. Nobody can agree on what they
> should be called because it's so hard to classify them.

They're not hard to classify. They are anything that can be passed to a template.

Andrei


August 21, 2013
On Wednesday, 21 August 2013 at 18:26:42 UTC, Andrei Alexandrescu wrote:
> On 8/21/13 11:21 AM, Brad Anderson wrote:
>> On Wednesday, 21 August 2013 at 17:53:21 UTC, Andrei Alexandrescu wrote:
>>> There's an inordinate amount of confusion around what we currently
>>> call "type tuple" (embodied in std's TypeTuple). I've been furious
>>> immediately as I got word that Walter called it that way, and it
>>> hasn't failed to make everybody else feel the same over the years.
>>>
>>> So: shall we use "template pack" going forward exclusively whenever we
>>> refer to that stuff? That way we can unambiguously use "tuple" for
>>> "value tuples, i.e. like mini-structs that group values together".
>>>
>>> Destroy. I mean criticize.
>>>
>>>
>>>
>>> Andrei
>>
>> There are a lot of good names for it: Template Pack, Type Sequence,
>> Template Argument List, Type List, etc. I think I like Type Sequence the
>> best but any will do.  All that really matters is getting Tuple out of
>> the name to clear up the confusion.
>
> We much more need to get "type" out of the name. Those aren't types.
>
> Andrei

Alright. I always found the Tuple part more confusing but I guess I'm in the minority since three people all jumped on the "type" portion of my comment at once.
August 21, 2013
On 8/21/13 11:44 AM, Brad Anderson wrote:
> On Wednesday, 21 August 2013 at 18:26:42 UTC, Andrei Alexandrescu wrote:
>> On 8/21/13 11:21 AM, Brad Anderson wrote:
>>> On Wednesday, 21 August 2013 at 17:53:21 UTC, Andrei Alexandrescu wrote:
>>>> There's an inordinate amount of confusion around what we currently
>>>> call "type tuple" (embodied in std's TypeTuple). I've been furious
>>>> immediately as I got word that Walter called it that way, and it
>>>> hasn't failed to make everybody else feel the same over the years.
>>>>
>>>> So: shall we use "template pack" going forward exclusively whenever we
>>>> refer to that stuff? That way we can unambiguously use "tuple" for
>>>> "value tuples, i.e. like mini-structs that group values together".
>>>>
>>>> Destroy. I mean criticize.
>>>>
>>>>
>>>>
>>>> Andrei
>>>
>>> There are a lot of good names for it: Template Pack, Type Sequence,
>>> Template Argument List, Type List, etc. I think I like Type Sequence the
>>> best but any will do.  All that really matters is getting Tuple out of
>>> the name to clear up the confusion.
>>
>> We much more need to get "type" out of the name. Those aren't types.
>>
>> Andrei
>
> Alright. I always found the Tuple part more confusing but I guess I'm in
> the minority since three people all jumped on the "type" portion of my
> comment at once.

"Tuple" needs to go as well, although that entity does look like a tuple in some respects.

Andrei
August 21, 2013
On Wednesday, 21 August 2013 at 18:45:49 UTC, Andrei Alexandrescu wrote:
> On 8/21/13 11:44 AM, Brad Anderson wrote:
>> On Wednesday, 21 August 2013 at 18:26:42 UTC, Andrei Alexandrescu wrote:
>>> On 8/21/13 11:21 AM, Brad Anderson wrote:
>>>> On Wednesday, 21 August 2013 at 17:53:21 UTC, Andrei Alexandrescu wrote:
>>>>> There's an inordinate amount of confusion around what we currently
>>>>> call "type tuple" (embodied in std's TypeTuple). I've been furious
>>>>> immediately as I got word that Walter called it that way, and it
>>>>> hasn't failed to make everybody else feel the same over the years.
>>>>>
>>>>> So: shall we use "template pack" going forward exclusively whenever we
>>>>> refer to that stuff? That way we can unambiguously use "tuple" for
>>>>> "value tuples, i.e. like mini-structs that group values together".
>>>>>
>>>>> Destroy. I mean criticize.
>>>>>
>>>>>
>>>>>
>>>>> Andrei
>>>>
>>>> There are a lot of good names for it: Template Pack, Type Sequence,
>>>> Template Argument List, Type List, etc. I think I like Type Sequence the
>>>> best but any will do.  All that really matters is getting Tuple out of
>>>> the name to clear up the confusion.
>>>
>>> We much more need to get "type" out of the name. Those aren't types.
>>>
>>> Andrei
>>
>> Alright. I always found the Tuple part more confusing but I guess I'm in
>> the minority since three people all jumped on the "type" portion of my
>> comment at once.
>
> "Tuple" needs to go as well, although that entity does look like a tuple in some respects.
>
> Andrei

Yeah, the name "tuple" isn't actually all that inaccurate.  The problem is more that it places too much load on the word for two very distinct things.
August 21, 2013
On 08/21/2013 11:40 AM, Atash wrote:

> I don't see wording 'template pack' being problematic, assuming that there's
> really no other way to use them but through templates (which AFAIK they
> can't).

TypeTuple can represent function parameter lists and array literal lists as well:

import std.typetuple;

void func(int, int)
{}

struct S(int a, int b)
{}

void main()
{
    alias tt = TypeTuple!(1, 2);

    func(tt);
    auto o = S!tt();
    auto arr = [ tt ];
}

Ali

August 21, 2013
On Wednesday, 21 August 2013 at 18:44:14 UTC, Andrei Alexandrescu wrote:
>> I think this is part of the problem. Nobody can agree on what they
>> should be called because it's so hard to classify them.
>
> They're not hard to classify. They are anything that can be passed to a template.

Maybe I'm splitting hairs, but that's what goes into them. Not what they *are*. So what goes into a template? Expressions, Types, Symbols. I can't think of something off the top of my head that covers all three of these. Expressing that it's a container is easy, but expressing what that container can contain is not, unless you want to call it ListOfStuffThatCanBePassedToATemplate.
August 21, 2013
On Wednesday, 21 August 2013 at 18:17:03 UTC, David Nadlinger wrote:
> Personally, I like using "Seq" as the name for the constructor template, as do a few other of the GitHub/NG regulars, so maybe "(parameter/variadic/…) sequence" would be an alternative worth discussing?

"Seq" is nice too because it has no baggage that comes with terms like "type", "tuple", or "template".  It's its own thing which hasn't been used to mean anything but what people are proposing (at least in the context of D).

I think I actually like "Seq" better than "parameter/variadic sequence" for this reason.  Neologism is a perfectly valid option (isn't that right, trie?).