Re: It's a class! It's a struct! It's ... SuperStruct!

2015-10-22 Thread rcorre via Digitalmars-d-announce
On Thursday, 22 October 2015 at 02:35:34 UTC, rcorre wrote: Come to think of it, SuperStruct actually sounds pretty similar to std.range.chooseAmong (which I just realized exists). It seems to work quite nicely as an alternative to choose that works with any types as opposed to just ranges:

Re: It's a class! It's a struct! It's ... SuperStruct!

2015-10-22 Thread Walter Bright via Digitalmars-d-announce
On 10/21/2015 3:28 PM, burjui wrote: On Tuesday, 20 October 2015 at 15:22:41 UTC, Vladimir Panteleev wrote: "This video is not available from your location". I haven't been able to find a mirror that's watchable from here either. Same here, though I finally googled out it's key phrase: "It's a

Re: It's a class! It's a struct! It's ... SuperStruct!

2015-10-21 Thread burjui via Digitalmars-d-announce
On Tuesday, 20 October 2015 at 15:22:41 UTC, Vladimir Panteleev wrote: "This video is not available from your location". I haven't been able to find a mirror that's watchable from here either. Same here, though I finally googled out it's key phrase: "It's a floor wax and a dessert topping!"

Re: It's a class! It's a struct! It's ... SuperStruct!

2015-10-21 Thread Timon Gehr via Digitalmars-d-announce
On 10/18/2015 09:00 PM, rcorre wrote: SuperStruct is a struct that acts like a class: --- struct Square { float size; float area() { return size * size; } } struct Circle { float r; float area() { return r * r * PI; } } alias Shape = SuperStruct!(Square, Circle); // look!

Re: It's a class! It's a struct! It's ... SuperStruct!

2015-10-21 Thread rcorre via Digitalmars-d-announce
On Wednesday, 21 October 2015 at 23:09:52 UTC, Timon Gehr wrote: "A call signature for a given member is 'compatible' * if, for an instance of any one of `SubTypes`, that member can be called with * the provided set of arguments _and_ all such calls have a common return type." Probably

Re: It's a class! It's a struct! It's ... SuperStruct!

2015-10-20 Thread Vladimir Panteleev via Digitalmars-d-announce
On Monday, 19 October 2015 at 10:27:26 UTC, Walter Bright wrote: On 10/18/2015 12:00 PM, rcorre wrote: SuperStruct is a struct that acts like a class: I suggest it be renamed to 'shimmer': http://www.nbc.com/saturday-night-live/video/shimmer-floor-wax/n8625 "This video is not available

Re: It's a class! It's a struct! It's ... SuperStruct!

2015-10-19 Thread Sönke Ludwig via Digitalmars-d-announce
The TaggedAlgebraic type that I made some time ago is also related. It's roughly a superset in that it exposes all members of all types instead of only the common types: https://github.com/s-ludwig/taggedalgebraic

Re: It's a class! It's a struct! It's ... SuperStruct!

2015-10-19 Thread Walter Bright via Digitalmars-d-announce
On 10/18/2015 12:00 PM, rcorre wrote: SuperStruct is a struct that acts like a class: I suggest it be renamed to 'shimmer': http://www.nbc.com/saturday-night-live/video/shimmer-floor-wax/n8625

Re: It's a class! It's a struct! It's ... SuperStruct!

2015-10-19 Thread Andrei Alexandrescu via Digitalmars-d-announce
On 10/18/15 3:00 PM, rcorre wrote: SuperStruct is a struct that acts like a class: [snip] Nice. I discussed "Classify" a while back with this semantics. -- Andrei

Re: It's a class! It's a struct! It's ... SuperStruct!

2015-10-19 Thread rcorre via Digitalmars-d-announce
On Sunday, 18 October 2015 at 21:26:55 UTC, rcorre wrote: And at the risk of going a little overboard, I think the answer to supporting arbitrary templated functions is to wrap visitor/project itself in a template, that then returns a variadic function while passing along other compile-time

Re: It's a class! It's a struct! It's ... SuperStruct!

2015-10-18 Thread Meta via Digitalmars-d-announce
On Sunday, 18 October 2015 at 19:00:16 UTC, rcorre wrote: You might find this interesting. It's an "outside-in" approach to the same problem as opposed to your "inside-out" approach. Not finished, but the general idea is there.

Re: It's a class! It's a struct! It's ... SuperStruct!

2015-10-18 Thread rcorre via Digitalmars-d-announce
On Sunday, 18 October 2015 at 21:18:52 UTC, rcorre wrote: On Sunday, 18 October 2015 at 21:00:32 UTC, Meta wrote: On Sunday, 18 October 2015 at 19:00:16 UTC, rcorre wrote: You might find this interesting. It's an "outside-in" approach to the same problem as opposed to your "inside-out"

Re: It's a class! It's a struct! It's ... SuperStruct!

2015-10-18 Thread Meta via Digitalmars-d-announce
On Sunday, 18 October 2015 at 21:18:52 UTC, rcorre wrote: That's just the kind of thing I was looking for! I actually started with a 'visitor' function that works similar to project: https://github.com/rcorre/superstruct/blob/master/src/superstruct.d#L153-L166 then decided to wrap the whole

Re: It's a class! It's a struct! It's ... SuperStruct!

2015-10-18 Thread rcorre via Digitalmars-d-announce
On Sunday, 18 October 2015 at 21:00:32 UTC, Meta wrote: On Sunday, 18 October 2015 at 19:00:16 UTC, rcorre wrote: You might find this interesting. It's an "outside-in" approach to the same problem as opposed to your "inside-out" approach. Not finished, but the general idea is there.

It's a class! It's a struct! It's ... SuperStruct!

2015-10-18 Thread rcorre via Digitalmars-d-announce
SuperStruct is a struct that acts like a class: --- struct Square { float size; float area() { return size * size; } } struct Circle { float r; float area() { return r * r * PI; } } alias Shape = SuperStruct!(Square, Circle); // look! polymorphism! Shape sqr = Square(2); Shape cir =