DIP54 : revamp of Phobos tuple types

2013-12-22 Thread Dicebot
http://wiki.dlang.org/DIP54 This is follow-up of several hot discussion threads that have happened several months ago. It has become pretty clear that there is no good way out of existing situation and least bad needs to be picked just to move forward (because it still be better than current

Re: DIP54 : revamp of Phobos tuple types

2013-12-22 Thread Timon Gehr
On 12/23/2013 02:39 AM, Dicebot wrote: http://wiki.dlang.org/DIP54 This is follow-up of several hot discussion threads that have happened several months ago. It has become pretty clear that there is no good way out of existing situation and least bad needs to be picked just to move forward (beca

Re: DIP54 : revamp of Phobos tuple types

2013-12-22 Thread Dicebot
On Monday, 23 December 2013 at 01:53:57 UTC, Timon Gehr wrote: How is this going to be implemented? In a similar way as this?: https://d.puremagic.com/issues/show_bug.cgi?id=11804 Without `alias this` part (that would destroy "no auto expansion" part unless I miss something). Also I am still u

Re: DIP54 : revamp of Phobos tuple types

2013-12-22 Thread Timon Gehr
On 12/23/2013 03:28 AM, Dicebot wrote: On Monday, 23 December 2013 at 01:53:57 UTC, Timon Gehr wrote: How is this going to be implemented? In a similar way as this?: https://d.puremagic.com/issues/show_bug.cgi?id=11804 Without `alias this` part (that would destroy "no auto expansion" part No

Re: DIP54 : revamp of Phobos tuple types

2013-12-22 Thread Jakob Ovrum
On Monday, 23 December 2013 at 01:39:26 UTC, Dicebot wrote: http://wiki.dlang.org/DIP54 Are you seriously suggesting we change the auto-expanding behaviour of template argument lists? This is going to cause the biggest code breakage since D2, for the niche benefit of having lists that don't

Re: DIP54 : revamp of Phobos tuple types

2013-12-22 Thread H. S. Teoh
On Mon, Dec 23, 2013 at 01:39:24AM +, Dicebot wrote: > http://wiki.dlang.org/DIP54 > > This is follow-up of several hot discussion threads that have > happened several months ago. It has become pretty clear that there > is no good way out of existing situation and least bad needs to be > picke

Re: DIP54 : revamp of Phobos tuple types

2013-12-22 Thread H. S. Teoh
On Mon, Dec 23, 2013 at 02:46:38AM +, Jakob Ovrum wrote: > On Monday, 23 December 2013 at 01:39:26 UTC, Dicebot wrote: > >http://wiki.dlang.org/DIP54 > > Are you seriously suggesting we change the auto-expanding behaviour > of template argument lists? This is going to cause the biggest code >

Re: DIP54 : revamp of Phobos tuple types

2013-12-22 Thread Dicebot
On Monday, 23 December 2013 at 03:00:11 UTC, Jakob Ovrum wrote: On Monday, 23 December 2013 at 02:55:57 UTC, H. S. Teoh wrote: People who want auto-expanding template argument lists can still do this: It's not perfectly clear, but it looks to me that the DIP suggests removing the auto-expand

Re: DIP54 : revamp of Phobos tuple types

2013-12-22 Thread Jakob Ovrum
On Monday, 23 December 2013 at 02:55:57 UTC, H. S. Teoh wrote: People who want auto-expanding template argument lists can still do this: It's not perfectly clear, but it looks to me that the DIP suggests removing the auto-expanding property of template argument lists.

Re: DIP54 : revamp of Phobos tuple types

2013-12-22 Thread Dicebot
On Monday, 23 December 2013 at 02:42:01 UTC, Timon Gehr wrote: On 12/23/2013 03:28 AM, Dicebot wrote: On Monday, 23 December 2013 at 01:53:57 UTC, Timon Gehr wrote: How is this going to be implemented? In a similar way as this?: https://d.puremagic.com/issues/show_bug.cgi?id=11804 Without `a

Re: DIP54 : revamp of Phobos tuple types

2013-12-22 Thread H. S. Teoh
On Mon, Dec 23, 2013 at 03:02:48AM +, Dicebot wrote: > On Monday, 23 December 2013 at 03:00:11 UTC, Jakob Ovrum wrote: > >On Monday, 23 December 2013 at 02:55:57 UTC, H. S. Teoh wrote: > >>People who want auto-expanding template argument lists can still do > >>this: > > > >It's not perfectly cl

Re: DIP54 : revamp of Phobos tuple types

2013-12-22 Thread Dicebot
On Monday, 23 December 2013 at 02:46:40 UTC, Jakob Ovrum wrote: This DIP makes several unfounded assumptions. It assumes that the semantics of template argument lists are inherently hard to learn, Hard? No. Complicated - yes, I see wrong assumptions being made all the time. But this is langua

Re: DIP54 : revamp of Phobos tuple types

2013-12-22 Thread Jakob Ovrum
On Monday, 23 December 2013 at 03:17:27 UTC, Dicebot wrote: Hard? No. Complicated - yes, I see wrong assumptions being made all the time. But this is language failure and is not directly related to this DIP. I don't think it's obvious that it's a language failure. I don't say that. I say that

Re: DIP54 : revamp of Phobos tuple types

2013-12-22 Thread Meta
On Monday, 23 December 2013 at 01:39:26 UTC, Dicebot wrote: http://wiki.dlang.org/DIP54 This is follow-up of several hot discussion threads that have happened several months ago. It has become pretty clear that there is no good way out of existing situation and least bad needs to be picked ju

Re: DIP54 : revamp of Phobos tuple types

2013-12-23 Thread John Colvin
On Monday, 23 December 2013 at 01:39:26 UTC, Dicebot wrote: http://wiki.dlang.org/DIP54 This is follow-up of several hot discussion threads that have happened several months ago. It has become pretty clear that there is no good way out of existing situation and least bad needs to be picked ju

Re: DIP54 : revamp of Phobos tuple types

2013-12-23 Thread ilya-stromberg
On Monday, 23 December 2013 at 01:39:26 UTC, Dicebot wrote: http://wiki.dlang.org/DIP54 This is follow-up of several hot discussion threads that have happened several months ago. It has become pretty clear that there is no good way out of existing situation and least bad needs to be picked ju

Re: DIP54 : revamp of Phobos tuple types

2013-12-23 Thread John Colvin
On Monday, 23 December 2013 at 09:14:46 UTC, John Colvin wrote: On Monday, 23 December 2013 at 01:39:26 UTC, Dicebot wrote: http://wiki.dlang.org/DIP54 This is follow-up of several hot discussion threads that have happened several months ago. It has become pretty clear that there is no good w

Re: DIP54 : revamp of Phobos tuple types

2013-12-23 Thread Andrej Mitrovic
On 12/23/13, Dicebot wrote: > http://wiki.dlang.org/DIP54 Quoting: There is also a private `std.typetuple.Pack` which is similar to current `std.typetuple.Tuple` but does not auto-expand. It is a tool absolutely necessary for more complex algorithms used in metaprogramming >>and is frequent

Re: DIP54 : revamp of Phobos tuple types

2013-12-23 Thread Dicebot
On Monday, 23 December 2013 at 11:08:26 UTC, Andrej Mitrovic wrote: If you simply remove the auto-expanding TypeTuple you will force coders to reinvent it. This may not seem like a big deal since you can simply do "alias List(T..) = T;", but it's a convenience template that should stay in Phob

Re: DIP54 : revamp of Phobos tuple types

2013-12-23 Thread Dicebot
On Monday, 23 December 2013 at 11:08:26 UTC, Andrej Mitrovic wrote: We always seem to forget that all newbies will eventually become experienced current users. Current (experienced) users need a little respect as well, not everything has to be tailored to the next batch of newbies by breaking

Re: DIP54 : revamp of Phobos tuple types

2013-12-23 Thread Dicebot
On Monday, 23 December 2013 at 10:15:19 UTC, ilya-stromberg wrote: About `auto-expansion` problem: please add documentation that describes difference between `auto-expansion TypeTuple` and `TemplateArgumentList without auto-expansion`. I personally don't know any difference, probably because I

Re: DIP54 : revamp of Phobos tuple types

2013-12-23 Thread Timon Gehr
On 12/23/2013 04:02 AM, Dicebot wrote: On Monday, 23 December 2013 at 03:00:11 UTC, Jakob Ovrum wrote: On Monday, 23 December 2013 at 02:55:57 UTC, H. S. Teoh wrote: People who want auto-expanding template argument lists can still do this: It's not perfectly clear, but it looks to me that the

Re: DIP54 : revamp of Phobos tuple types

2013-12-23 Thread Dicebot
On Monday, 23 December 2013 at 11:50:08 UTC, Timon Gehr wrote: This misunderstanding arose because the name of the construct is misleading. Can explain this a bit? What makes one miss distinction between language term and library type? (Hint: latter is denoted by CamelCase ;))

Re: DIP54 : revamp of Phobos tuple types

2013-12-23 Thread Dicebot
On Monday, 23 December 2013 at 03:45:07 UTC, Jakob Ovrum wrote: We can't afford to add even more "tuple" types in library. One tuple and two compile-time lists - where the auto-expanding one covers the vast majority of use cases - doesn't sound at all bad. I think this is the root cause of

Re: DIP54 : revamp of Phobos tuple types

2013-12-23 Thread ilya-stromberg
On Monday, 23 December 2013 at 11:44:01 UTC, Dicebot wrote: On Monday, 23 December 2013 at 10:15:19 UTC, ilya-stromberg wrote: About `auto-expansion` problem: please add documentation that describes difference between `auto-expansion TypeTuple` and `TemplateArgumentList without auto-expansion`.

Re: DIP54 : revamp of Phobos tuple types

2013-12-23 Thread bearophile
Jakob Ovrum: One tuple and two compile-time lists - where the auto-expanding one covers the vast majority of use cases - doesn't sound at all bad. Plus built-in syntax to unpack tuples in various situations. Bye, bearophile

Re: DIP54 : revamp of Phobos tuple types

2013-12-23 Thread Dicebot
On Monday, 23 December 2013 at 12:03:05 UTC, ilya-stromberg wrote: Can we add alias for `auto-expansion TypeTuple` and add link to the previous documentation like this: alias ExpandedTemplateArgumentList(T) = TemplateArgumentList!(T).expand; It looks like it can fix all objections here. Wh

Re: DIP54 : revamp of Phobos tuple types

2013-12-23 Thread ilya-stromberg
On Monday, 23 December 2013 at 12:25:55 UTC, Dicebot wrote: On Monday, 23 December 2013 at 12:03:05 UTC, ilya-stromberg wrote: Can we add alias for `auto-expansion TypeTuple` and add link to the previous documentation like this: alias ExpandedTemplateArgumentList(T) = TemplateArgumentList!(T)

Re: DIP54 : revamp of Phobos tuple types

2013-12-23 Thread ponce
On Monday, 23 December 2013 at 01:39:26 UTC, Dicebot wrote: http://wiki.dlang.org/DIP54 Full support. Never used tuple or TypeTuple since I don't understand what they are for, and their precise relationship to templated argument lists. Better names will help. A code breakage with a compilati

Re: DIP54 : revamp of Phobos tuple types

2013-12-23 Thread monarch_dodra
On Monday, 23 December 2013 at 12:25:55 UTC, Dicebot wrote: On Monday, 23 December 2013 at 12:03:05 UTC, ilya-stromberg wrote: Can we add alias for `auto-expansion TypeTuple` and add link to the previous documentation like this: alias ExpandedTemplateArgumentList(T) = TemplateArgumentList!(T)

Re: DIP54 : revamp of Phobos tuple types

2013-12-23 Thread Dicebot
On Monday, 23 December 2013 at 13:13:13 UTC, monarch_dodra wrote: On Monday, 23 December 2013 at 12:25:55 UTC, Dicebot wrote: On Monday, 23 December 2013 at 12:03:05 UTC, ilya-stromberg wrote: Can we add alias for `auto-expansion TypeTuple` and add link to the previous documentation like this:

Re: DIP54 : revamp of Phobos tuple types

2013-12-23 Thread monarch_dodra
5 Algorithms from `std.typetuple` are re-written to accept non-expanding template argument lists and form base for `std.meta.` package. Why? This seems to me like it would create duplication for nothing. These templates would do the expanding themselves? Unless I'm mistaken, the `TemplateArg

Re: DIP54 : revamp of Phobos tuple types

2013-12-23 Thread Dicebot
On Monday, 23 December 2013 at 13:23:39 UTC, monarch_dodra wrote: 5 Algorithms from `std.typetuple` are re-written to accept non-expanding template argument lists and form base for `std.meta.` package. Why? This seems to me like it would create duplication for nothing. These templates would d

Re: DIP54 : revamp of Phobos tuple types

2013-12-23 Thread ilya-stromberg
On Monday, 23 December 2013 at 11:58:06 UTC, Dicebot wrote: Also having both types at the same time will cause difficulties with template algorithms currently present in std.typetuple - having some defined in terms of raw argument list and others in terms of packed TemplateArgumentList is just

Re: DIP54 : revamp of Phobos tuple types

2013-12-23 Thread Maxim Fomin
On Monday, 23 December 2013 at 11:59:34 UTC, Dicebot wrote: On Monday, 23 December 2013 at 11:50:08 UTC, Timon Gehr wrote: This misunderstanding arose because the name of the construct is misleading. Can explain this a bit? What makes one miss distinction between language term and library typ

Re: DIP54 : revamp of Phobos tuple types

2013-12-23 Thread Dicebot
On Monday, 23 December 2013 at 13:41:07 UTC, Maxim Fomin wrote: On Monday, 23 December 2013 at 11:59:34 UTC, Dicebot wrote: On Monday, 23 December 2013 at 11:50:08 UTC, Timon Gehr wrote: This misunderstanding arose because the name of the construct is misleading. Can explain this a bit? What

Re: DIP54 : revamp of Phobos tuple types

2013-12-23 Thread Michel Fortin
On 2013-12-23 01:39:24 +, "Dicebot" said: http://wiki.dlang.org/DIP54 This is follow-up of several hot discussion threads that have happened several months ago. It has become pretty clear that there is no good way out of existing situation and least bad needs to be picked just to move f

Re: DIP54 : revamp of Phobos tuple types

2013-12-23 Thread monarch_dodra
On Monday, 23 December 2013 at 13:31:36 UTC, Dicebot wrote: On Monday, 23 December 2013 at 13:23:39 UTC, monarch_dodra eg: staticIndexOf(int, TemplateArgumentList!(int, double), int); Produces 1? 2? 3? I really don't know. Compile-time error, new `staticIndexOf` will strictly accept 2 templa

Re: DIP54 : revamp of Phobos tuple types

2013-12-23 Thread JR
Disclaimer: I am a newbie and I have *almost* understood the difference between built-in tuples, Tuple and TypeTuple. Almost. I'll have to get back to you on that. I also have some bad history with auto-expansion from my work with bash scripts, but that's for me and my therapist. On Monday, 2

Re: DIP54 : revamp of Phobos tuple types

2013-12-23 Thread Dicebot
On Monday, 23 December 2013 at 13:58:13 UTC, JR wrote: ... I have *almost* understood the difference between built-in tuples, Tuple and TypeTuple. I had this feeling probably 5 or 6 times in past few years, only to find some new surprise every time :D Can only hope that finally got it right i

Re: DIP54 : revamp of Phobos tuple types

2013-12-23 Thread Dicebot
On Monday, 23 December 2013 at 13:50:26 UTC, monarch_dodra wrote: Ok... Then that'll break existing code that doesn't even *use* TypeTuple... Seems lose-lose to me :/ Yes, this DIP defines breaking transition that requires user action at some point. It is expected and approved by Andrei - we

Re: DIP54 : revamp of Phobos tuple types

2013-12-23 Thread monarch_dodra
On Monday, 23 December 2013 at 14:00:21 UTC, Dicebot wrote: On Monday, 23 December 2013 at 13:50:26 UTC, monarch_dodra wrote: Ok... Then that'll break existing code that doesn't even *use* TypeTuple... Seems lose-lose to me :/ Yes, this DIP defines breaking transition that requires user actio

Re: DIP54 : revamp of Phobos tuple types

2013-12-23 Thread monarch_dodra
On Monday, 23 December 2013 at 15:34:07 UTC, monarch_dodra wrote: You proposal (this is still all about your proposal 5), wants to make std.typetuple use TAL's in all their implementations. I mean "interface".

Re: DIP54 : revamp of Phobos tuple types

2013-12-23 Thread Timon Gehr
On 12/23/2013 12:59 PM, Dicebot wrote: On Monday, 23 December 2013 at 11:50:08 UTC, Timon Gehr wrote: This misunderstanding arose because the name of the construct is misleading. Can explain this a bit? What makes one miss distinction between language term and library type? (It is not a type

Re: DIP54 : revamp of Phobos tuple types

2013-12-23 Thread monarch_dodra
On Monday, 23 December 2013 at 15:59:10 UTC, Timon Gehr wrote: As is the former. :P http://dlang.org/template.html#TemplateArgumentList I think using the name TemplateArgumentList for anything other than a shallow wrapper around a template argument list does not actually improve the naming si

Re: DIP54 : revamp of Phobos tuple types

2013-12-23 Thread Andrej Mitrovic
On 12/23/13, Dicebot wrote: > http://wiki.dlang.org/DIP54 I'm waiting to see what others who use TypeTuples think of the DIP. E.g. Philippe Sigaud, David Nadlinger, Hara Kenji, Martin Nowak, Don Clugston, David Simcha, Steven Schveighoffer, etc. I'm pretty sure (most) of these guys use tuples a l

Re: DIP54 : revamp of Phobos tuple types

2013-12-23 Thread H. S. Teoh
On Mon, Dec 23, 2013 at 02:04:52PM +, Dicebot wrote: > On Monday, 23 December 2013 at 13:58:13 UTC, JR wrote: > >... I have *almost* understood the difference between built-in > >tuples, Tuple and TypeTuple. > > I had this feeling probably 5 or 6 times in past few years, only to > find some ne

Re: DIP54 : revamp of Phobos tuple types

2013-12-23 Thread Andrei Alexandrescu
On 12/23/13 4:25 AM, Dicebot wrote: On Monday, 23 December 2013 at 12:03:05 UTC, ilya-stromberg wrote: Can we add alias for `auto-expansion TypeTuple` and add link to the previous documentation like this: alias ExpandedTemplateArgumentList(T) = TemplateArgumentList!(T).expand; It looks like it

Re: DIP54 : revamp of Phobos tuple types

2013-12-23 Thread Andrei Alexandrescu
On 12/23/13 4:07 AM, bearophile wrote: Jakob Ovrum: One tuple and two compile-time lists - where the auto-expanding one covers the vast majority of use cases - doesn't sound at all bad. Plus built-in syntax to unpack tuples in various situations. I don't think "various situations" is a good

Re: DIP54 : revamp of Phobos tuple types

2013-12-23 Thread Andrei Alexandrescu
On 12/23/13 5:41 AM, Maxim Fomin wrote: Personally I am upset when I get some weird Phobos structure which simulates language feature, rathen then having feature in the language in first place. It's a fine line to thread. Erring on either side is easy and with bad consequences. Andrei

Re: DIP54 : revamp of Phobos tuple types

2013-12-23 Thread H. S. Teoh
On Mon, Dec 23, 2013 at 04:30:14PM -0800, Andrei Alexandrescu wrote: > On 12/23/13 5:41 AM, Maxim Fomin wrote: > >Personally I am upset when I get some weird Phobos structure which > >simulates language feature, rathen then having feature in the > >language in first place. > > It's a fine line to

Re: DIP54 : revamp of Phobos tuple types

2013-12-23 Thread bearophile
Andrei Alexandrescu: I don't think "various situations" is a good idea. It often does make code shorter. But it means more rules to be defined, implemented, and taught. Here I have written "various situations" because I have given a list of those "various situations" in past posts. I think t

Re: DIP54 : revamp of Phobos tuple types

2013-12-23 Thread bearophile
H. S. Teoh: Personally, I'm for simplifying the core language and moving non-essentials out to the standard library How do you define "essential"? - Frequently used; - The compiler can compile it as efficiently as handwritten code; - Has a sufficiently clean semantics, that is most times the o

Re: DIP54 : revamp of Phobos tuple types

2013-12-23 Thread H. S. Teoh
On Tue, Dec 24, 2013 at 01:05:26AM +, bearophile wrote: > H. S. Teoh: > > >Personally, I'm for simplifying the core language and moving > >non-essentials out to the standard library > > How do you define "essential"? > - Frequently used; I don't think 'frequently used' is sufficient to justi

Re: DIP54 : revamp of Phobos tuple types

2013-12-23 Thread Jakob Ovrum
I think this is just getting absurd. The conflation between the naming issue and auto-expansion is so bloody dishonest. The DIP looks really good to newbies because it addresses the former but then they don't really understand the latter (as some have even said explicitly). Further, if this DI

Re: DIP54 : revamp of Phobos tuple types

2013-12-23 Thread H. S. Teoh
On Tue, Dec 24, 2013 at 02:52:18AM +, Jakob Ovrum wrote: > I think this is just getting absurd. > > The conflation between the naming issue and auto-expansion is so > bloody dishonest. The DIP looks really good to newbies because it > addresses the former but then they don't really understand

Re: DIP54 : revamp of Phobos tuple types

2013-12-23 Thread Jakob Ovrum
On Tuesday, 24 December 2013 at 04:08:25 UTC, H. S. Teoh wrote: So if we only implemented the first part of the DIP, the renaming of std.typeconds.TypeTuple -> std.meta.list (or whatever, let's not start bikeshedding this early), along with the documentation cleanup which is long overdue anyw

Re: DIP54 : revamp of Phobos tuple types

2013-12-23 Thread Jakob Ovrum
On Tuesday, 24 December 2013 at 04:48:57 UTC, Jakob Ovrum wrote: [1] Assuming that the case for non-auto-expanding lists can be argued sufficiently for inclusion in Phobos, which is yet to be seen. This DIP doesn't seem to even try. Clarification: "Assuming that the case for non-auto-expanding

Re: DIP54 : revamp of Phobos tuple types

2013-12-23 Thread Andrei Alexandrescu
On 12/23/13 7:34 AM, monarch_dodra wrote: My issue about this is that it will break existing code that doesn't even use the type "TypeTuple". What are the gains of: anySatisfy!(someTrait, TemplateArgumentList!(int, double)); over anySatisfy!(someTrait, int, double) Or anySatisfy!(someTrait, Te

Re: DIP54 : revamp of Phobos tuple types

2013-12-23 Thread Andrei Alexandrescu
On 12/23/13 8:21 AM, monarch_dodra wrote: On Monday, 23 December 2013 at 15:59:10 UTC, Timon Gehr wrote: As is the former. :P http://dlang.org/template.html#TemplateArgumentList I think using the name TemplateArgumentList for anything other than a shallow wrapper around a template argument lis

Re: DIP54 : revamp of Phobos tuple types

2013-12-24 Thread Philippe Sigaud
On Mon, Dec 23, 2013 at 7:34 PM, Andrej Mitrovic wrote: > I'm waiting to see what others who use TypeTuples think of the DIP. > E.g. Philippe Sigaud, David Nadlinger, Hara Kenji, Martin Nowak, Don > Clugston, David Simcha, Steven Schveighoffer, etc. I'm pretty sure > (most) of these guys use tuple

Re: DIP54 : revamp of Phobos tuple types

2013-12-24 Thread Dmitry Olshansky
24-Dec-2013 04:57, bearophile пишет: Andrei Alexandrescu: It often does make code shorter. It also avoids the programmer to think about useless details, leaving more brain for more important things. Assigning the fields to variables like this: const uselessTmp = foo(); immutable something = u

Re: DIP54 : revamp of Phobos tuple types

2013-12-24 Thread Dmitry Olshansky
24-Dec-2013 09:00, Jakob Ovrum пишет: On Tuesday, 24 December 2013 at 04:48:57 UTC, Jakob Ovrum wrote: [1] Assuming that the case for non-auto-expanding lists can be argued sufficiently for inclusion in Phobos, which is yet to be seen. This DIP doesn't seem to even try. Clarification: "Assumin

Re: DIP54 : revamp of Phobos tuple types

2013-12-24 Thread Jakob Ovrum
On Tuesday, 24 December 2013 at 10:30:47 UTC, Dmitry Olshansky wrote: As long as algorithms that operate say on 2 lists expect arguments to have '.expand' we'd be in a good shape just providing a `packList` or some such together with `list`. I think so too. Of course, it is predicated on the f

Re: DIP54 : revamp of Phobos tuple types

2013-12-29 Thread Andrei Alexandrescu
On 12/29/13 3:09 AM, Dicebot wrote: 1) Timon has raised the point that exact match between in naming between built-in and library type will be confusing as they will actually differ in behavior (http://forum.dlang.org/post/l99mke$q1o$1...@digitalmars.com). Andrei has proposed `TemplateArgumentPac

Re: DIP54 : revamp of Phobos tuple types

2013-12-29 Thread John Colvin
On Sunday, 29 December 2013 at 15:01:03 UTC, Andrei Alexandrescu wrote: On 12/29/13 3:09 AM, Dicebot wrote: 1) Timon has raised the point that exact match between in naming between built-in and library type will be confusing as they will actually differ in behavior (http://forum.dlang.org/pos

Re: DIP54 : revamp of Phobos tuple types

2013-12-29 Thread Jakob Ovrum
On Sunday, 29 December 2013 at 11:10:00 UTC, Dicebot wrote: Despite my initial desire to standardize API between library types it seems that breakage will be much more damaging than I have initially expected. Jakob example (http://forum.dlang.org/post/vkeqyorptcobufzmm...@forum.dlang.org) does

Re: DIP54 : revamp of Phobos tuple types

2013-12-29 Thread Dicebot
On Sunday, 29 December 2013 at 15:01:03 UTC, Andrei Alexandrescu wrote: I think a duo `TemplateArgumentList` (auto-expansion) and `TemplateArgumentPack` (no auto-expansion) in the same module is the ticket. It also makes for a wonderful opportunity to explain the distinction in the documentatio

Re: DIP54 : revamp of Phobos tuple types

2013-12-29 Thread Jakob Ovrum
On Sunday, 29 December 2013 at 15:01:03 UTC, Andrei Alexandrescu wrote: I think a duo `TemplateArgumentList` (auto-expansion) and `TemplateArgumentPack` (no auto-expansion) in the same module is the ticket. It also makes for a wonderful opportunity to explain the distinction in the documentatio

Re: DIP54 : revamp of Phobos tuple types

2013-12-29 Thread Dicebot
On Sunday, 29 December 2013 at 15:35:50 UTC, Jakob Ovrum wrote: ... Sorry, can you make a short summary about your position? You are against adding packed list to library or just against removing expanding one (from the library)?

Re: DIP54 : revamp of Phobos tuple types

2013-12-29 Thread Jakob Ovrum
On Sunday, 29 December 2013 at 15:45:59 UTC, Dicebot wrote: On Sunday, 29 December 2013 at 15:35:50 UTC, Jakob Ovrum wrote: ... Sorry, can you make a short summary about your position? You are against adding packed list to library or just against removing expanding one (from the library)?

Re: DIP54 : revamp of Phobos tuple types

2013-12-29 Thread Andrei Alexandrescu
On 12/29/13 7:42 AM, Jakob Ovrum wrote: On Sunday, 29 December 2013 at 15:01:03 UTC, Andrei Alexandrescu wrote: I think a duo `TemplateArgumentList` (auto-expansion) and `TemplateArgumentPack` (no auto-expansion) in the same module is the ticket. It also makes for a wonderful opportunity to expl

Re: DIP54 : revamp of Phobos tuple types

2013-12-29 Thread Jakob Ovrum
On Sunday, 29 December 2013 at 16:01:41 UTC, Andrei Alexandrescu wrote: I also think it should be shorter, because a) it's a fundamental, and thus very commonly used template, and b) code that manipulates lists are functional in nature which results in long lines that are also hard to split up

Re: DIP54 : revamp of Phobos tuple types

2013-12-29 Thread Andrei Alexandrescu
On 12/29/13 8:14 AM, Jakob Ovrum wrote: On Sunday, 29 December 2013 at 16:01:41 UTC, Andrei Alexandrescu wrote: I also think it should be shorter, because a) it's a fundamental, and thus very commonly used template, and b) code that manipulates lists are functional in nature which results in lon

Re: DIP54 : revamp of Phobos tuple types

2013-12-29 Thread Jakob Ovrum
On Sunday, 29 December 2013 at 16:19:57 UTC, Andrei Alexandrescu wrote: It's been discussed before - these are advanced notions that won't be used frequently and naively. I guess I'm biased by writing a lot of library code, where it's quite frequently used. I can imagine application code using

Re: DIP54 : revamp of Phobos tuple types

2013-12-29 Thread Dmitry Olshansky
29-Dec-2013 20:01, Andrei Alexandrescu пишет: On 12/29/13 7:42 AM, Jakob Ovrum wrote: On Sunday, 29 December 2013 at 15:01:03 UTC, Andrei Alexandrescu wrote: I also think it should be shorter, because a) it's a fundamental, and thus very commonly used template, and b) code that manipulates lists

Re: DIP54 : revamp of Phobos tuple types

2013-12-29 Thread Dicebot
On Sunday, 29 December 2013 at 19:02:57 UTC, Dmitry Olshansky wrote: And having to deal with all kinds of aliases people are _expected_ to create? Why not pick something accessible in the first place? Because no good short name has ever been proposed so far. I'd strongly discourage creating p

Re: DIP54 : revamp of Phobos tuple types

2013-12-29 Thread Dicebot
Back to fighting :) On Sunday, 29 December 2013 at 15:35:50 UTC, Jakob Ovrum wrote: Breakage that causes errors in secondary locations and cannot be automatically repaired (e.g. search & replace) is the worst kind of breakage, after silent failures, that I can think of. This is why I have con

Re: DIP54 : revamp of Phobos tuple types

2013-12-29 Thread Timon Gehr
On 12/29/2013 10:41 PM, Dicebot wrote: ... "Use in static foreach" - works with alias this "Use in special expressions that operate on types, such as `is`, `typeof` and `typeid`" - any code that does on expanded lists right now is completely broken and must be re-written according to existing sp

Re: DIP54 : revamp of Phobos tuple types

2013-12-29 Thread David Nadlinger
On Sunday, 29 December 2013 at 15:42:34 UTC, Jakob Ovrum wrote: I think we should use this chance to rectify the capitalization of the name. As the result is not exclusively a list of types, current conventions state that the name should be lowerCamelCase. I believe you got this one the wrong

Re: DIP54 : revamp of Phobos tuple types

2013-12-29 Thread David Nadlinger
On Sunday, 29 December 2013 at 15:42:34 UTC, Jakob Ovrum wrote: I think we should use this chance to rectify the capitalization of the name. As the result is not exclusively a list of types, current conventions state that the name should be lowerCamelCase. I believe you got this one the wrong

Re: DIP54 : revamp of Phobos tuple types

2013-12-29 Thread Dicebot
On Monday, 30 December 2013 at 00:20:43 UTC, Timon Gehr wrote: What would be an example of code that you consider to be broken? (TemplateArgumentList!(int, double) is a valid type and TemplateArgumentList!(1, 2.0) is a value of that type.) Stuff that relies that, for example, that `is(TypeTupl

Re: DIP54 : revamp of Phobos tuple types

2013-12-29 Thread Dicebot
On Monday, 30 December 2013 at 01:36:48 UTC, David Nadlinger wrote: On Sunday, 29 December 2013 at 15:42:34 UTC, Jakob Ovrum wrote: I think we should use this chance to rectify the capitalization of the name. As the result is not exclusively a list of types, current conventions state that the n

Re: DIP54 : revamp of Phobos tuple types

2013-12-29 Thread David Nadlinger
On Monday, 30 December 2013 at 03:01:08 UTC, Dicebot wrote: Do we actually have guidelines about casing in context of aliased content? I had impression that it is symbol on its own that matters and thus TemplateArgumentPack needs to be CamelCased simply because it is a type/template, whatever i

Re: DIP54 : revamp of Phobos tuple types

2013-12-29 Thread Dicebot
On Monday, 30 December 2013 at 03:19:36 UTC, David Nadlinger wrote: On Monday, 30 December 2013 at 03:01:08 UTC, Dicebot wrote: Do we actually have guidelines about casing in context of aliased content? I had impression that it is symbol on its own that matters and thus TemplateArgumentPack nee

Re: DIP54 : revamp of Phobos tuple types

2013-12-29 Thread Timon Gehr
On 12/30/2013 03:58 AM, Dicebot wrote: On Monday, 30 December 2013 at 00:20:43 UTC, Timon Gehr wrote: What would be an example of code that you consider to be broken? (TemplateArgumentList!(int, double) is a valid type and TemplateArgumentList!(1, 2.0) is a value of that type.) Stuff that reli

Re: DIP54 : revamp of Phobos tuple types

2013-12-29 Thread Andrei Alexandrescu
On 12/29/13 6:58 PM, Dicebot wrote: On Monday, 30 December 2013 at 00:20:43 UTC, Timon Gehr wrote: What would be an example of code that you consider to be broken? (TemplateArgumentList!(int, double) is a valid type and TemplateArgumentList!(1, 2.0) is a value of that type.) Stuff that relies

Re: DIP54 : revamp of Phobos tuple types

2013-12-29 Thread Dicebot
On Monday, 30 December 2013 at 03:44:49 UTC, Andrei Alexandrescu wrote: I don't understand the question. I think there's no particular relation between TemplateArgument{List,Pack}!(int, double) and TemplateArgument{List,Pack}!(1, 2.0). One is a list of two types and the other is a list of two v

Re: DIP54 : revamp of Phobos tuple types

2013-12-29 Thread Timon Gehr
On 12/30/2013 04:44 AM, Andrei Alexandrescu wrote: I don't understand the question. I think there's no particular relation between TemplateArgument{List,Pack}!(int, double) and TemplateArgument{List,Pack}!(1, 2.0). One is a list of two types and the other is a list of two values, and yah, if you

Re: DIP54 : revamp of Phobos tuple types

2013-12-29 Thread Dicebot
On Monday, 30 December 2013 at 03:37:56 UTC, Timon Gehr wrote: It is in line with general rule of opXXX for structs working as syntax rewrite. No, it is not. "No" as in "not in line" or "you interpret rules wrong"? Me too. Maybe it should be addressed in general by defining template-argume

Re: DIP54 : revamp of Phobos tuple types

2013-12-29 Thread Dicebot
On Monday, 30 December 2013 at 04:07:42 UTC, Timon Gehr wrote: Template arguments lists are what they are - entities that can be passed to templates. Aliasing them is sensible but creating values thereof does not make sense. You are doing it in the implementation of std.typecons.Tuple, and o

Re: DIP54 : revamp of Phobos tuple types

2013-12-29 Thread Timon Gehr
On 12/30/2013 05:11 AM, Dicebot wrote: On Monday, 30 December 2013 at 04:07:42 UTC, Timon Gehr wrote: Template arguments lists are what they are - entities that can be passed to templates. Aliasing them is sensible but creating values thereof does not make sense. You are doing it in the implem

Re: DIP54 : revamp of Phobos tuple types

2013-12-29 Thread Timon Gehr
On 12/30/2013 05:08 AM, Dicebot wrote: On Monday, 30 December 2013 at 03:37:56 UTC, Timon Gehr wrote: It is in line with general rule of opXXX for structs working as syntax rewrite. No, it is not. "No" as in "not in line" or "you interpret rules wrong"? ... Both. There is no precedent for

Re: DIP54 : revamp of Phobos tuple types

2013-12-29 Thread Dicebot
On Monday, 30 December 2013 at 04:25:22 UTC, Timon Gehr wrote: If you are going to claim that this is not proper creation of an instance of a type, except that: int x; static assert(is(typeof(x)==int)); Seq!(int, double) y; static assert(is(typeof(y)==Seq!(int, double))); // presumably "bad"

Re: DIP54 : revamp of Phobos tuple types

2013-12-29 Thread Dicebot
On Monday, 30 December 2013 at 04:35:04 UTC, Timon Gehr wrote: Both. There is no precedent for rewriting operator arguments to template value arguments neither in the spec, in newsgroup discussions on the design of a potential feature, nor in the implementation. You seemed to claim this is mere

Re: DIP54 : revamp of Phobos tuple types

2013-12-29 Thread Timon Gehr
On 12/30/2013 05:55 AM, Dicebot wrote: Ah I was referring to the fact that it does not seem to compile even assuming normal non-template parameters as indexes (which looks like a bug). Other part (which is real desired one) is not allowed by spec right now indeed. struct X { static int opS

Re: DIP54 : revamp of Phobos tuple types

2013-12-29 Thread Timon Gehr
On 12/30/2013 05:51 AM, Dicebot wrote: On Monday, 30 December 2013 at 04:25:22 UTC, Timon Gehr wrote: If you are going to claim that this is not proper creation of an instance of a type, except that: int x; static assert(is(typeof(x)==int)); Seq!(int, double) y; static assert(is(typeof(y)==Seq

Re: DIP54 : revamp of Phobos tuple types

2013-12-29 Thread Andrei Alexandrescu
On 12/29/13 8:03 PM, Dicebot wrote: It is yet another special case that makes template argument list act as first class type despite not being one. Oh, I see. Yah, that's odd but then such is life. I think it's a tolerable special case. If it is you judgement, let it be so. I prefer to star

Re: DIP54 : revamp of Phobos tuple types

2013-12-29 Thread Andrei Alexandrescu
On 12/29/13 8:07 PM, Timon Gehr wrote: On 12/30/2013 04:44 AM, Andrei Alexandrescu wrote: I don't understand the question. I think there's no particular relation between TemplateArgument{List,Pack}!(int, double) and TemplateArgument{List,Pack}!(1, 2.0). One is a list of two types and the other

Re: DIP54 : revamp of Phobos tuple types

2013-12-29 Thread Andrei Alexandrescu
On 12/29/13 8:25 PM, Timon Gehr wrote: On 12/30/2013 05:11 AM, Dicebot wrote: On Monday, 30 December 2013 at 04:07:42 UTC, Timon Gehr wrote: Template arguments lists are what they are - entities that can be passed to templates. Aliasing them is sensible but creating values thereof does not make

  1   2   >