Thread overview | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
|
January 27, 2012 Alternative template instantiation syntax | ||||
---|---|---|---|---|
| ||||
A pattern in D is this: alias Foo!q{ stuffs } MyFoo; Where Foo is a templated struct/class. In many ways, this is similar to defining a new type, and I therefore throw out the suggestion that the syntax should reflect this. I may be wrong, but I think this syntax is unused and fitting: Foo MyFoo!q{ stuffs } This is clearly symmetrical with the definition of normal types: class MyClass { } struct MyStruct { } enum MyEnum { } Critique? Thoughts? |
January 27, 2012 Re: Alternative template instantiation syntax | ||||
---|---|---|---|---|
| ||||
Posted in reply to Simen Kjærås | On Friday, 27 January 2012 at 01:24:54 UTC, Simen Kjærås wrote:
> Critique? Thoughts?
What problem does this solve?
|
January 27, 2012 Re: Alternative template instantiation syntax | ||||
---|---|---|---|---|
| ||||
Posted in reply to Simen Kjærås | On 01/27/2012 02:24 AM, Simen Kjærås wrote:
> A pattern in D is this:
>
> alias Foo!q{
> stuffs
> } MyFoo;
>
> Where Foo is a templated struct/class. In many ways, this is similar to
> defining a new type, and I therefore throw out the suggestion that the
> syntax should reflect this. I may be wrong, but I think this syntax is
> unused and fitting:
>
> Foo MyFoo!q{
> stuffs
> }
>
> This is clearly symmetrical with the definition of normal types:
>
> class MyClass {
> }
>
> struct MyStruct {
> }
>
> enum MyEnum {
> }
>
> Critique? Thoughts?
It looks like Yoda speak to me. I don't think it is going to fly. If we get alias name = othername; as has been suggested a few times, your example would look like:
alias MyFoo = Foo!q{
}
Is that good enough?
|
January 27, 2012 Re: Alternative template instantiation syntax | ||||
---|---|---|---|---|
| ||||
Posted in reply to Timon Gehr | Timon Gehr wrote:
> alias MyFoo = Foo!q{
>
> }
This syntax makes a lot of sense, but why have the '=' at all? Why not just:
alias Num float;
alias MyFoo Foo!q{
};
|
January 27, 2012 Re: Alternative template instantiation syntax | ||||
---|---|---|---|---|
| ||||
Posted in reply to F i L | On Friday, 27 January 2012 at 22:02:55 UTC, F i L wrote:
> Timon Gehr wrote:
>> alias MyFoo = Foo!q{
>>
>> }
>
> This syntax makes a lot of sense, but why have the '=' at all? Why not just:
>
> alias Num float;
> alias MyFoo Foo!q{
>
> };
I guess one reason is that it fits better with the rest of the language, it feels more natural. Also, wouldn't your proposal require making the current syntax illegal and breaking pretty much all of existing D code?
|
January 27, 2012 Re: Alternative template instantiation syntax | ||||
---|---|---|---|---|
| ||||
Posted in reply to a | On Friday, 27 January 2012 at 22:20:47 UTC, a wrote:
> On Friday, 27 January 2012 at 22:02:55 UTC, F i L wrote:
>> Timon Gehr wrote:
>>> alias MyFoo = Foo!q{
>>>
>>> }
>>
>> This syntax makes a lot of sense, but why have the '=' at all? Why not just:
>>
>> alias Num float;
>> alias MyFoo Foo!q{
>>
>> };
>
> I guess one reason is that it fits better with the rest of the language, it feels more natural. Also, wouldn't your proposal require making the current syntax illegal and breaking pretty much all of existing D code?
Every proposal here would break D, so I'm not sure what you mean by "my" proposal. Also, because aliases are non-lvalue definitions, I don't think '=' makes a lot of sense, but I'm not an expert on the matter.
|
January 27, 2012 Re: Alternative template instantiation syntax | ||||
---|---|---|---|---|
| ||||
Posted in reply to F i L | On 01/27/2012 11:29 PM, F i L wrote: > On Friday, 27 January 2012 at 22:20:47 UTC, a wrote: >> On Friday, 27 January 2012 at 22:02:55 UTC, F i L wrote: >>> Timon Gehr wrote: >>>> alias MyFoo = Foo!q{ >>>> >>>> } >>> >>> This syntax makes a lot of sense, but why have the '=' at all? Why >>> not just: >>> >>> alias Num float; >>> alias MyFoo Foo!q{ >>> >>> }; Because then we have alias symbol1 symbol2; which means symbol2 is an alias for symbol1 and alias symbol1 symbol2!(...) which means symbol1 is an alias for symbol2!(...). It does not seem right. >> >> I guess one reason is that it fits better with the rest of the >> language, it feels more natural. Also, wouldn't your proposal require >> making the current syntax illegal and breaking pretty much all of >> existing D code? > > Every proposal here would break D, so I'm not sure what you mean by "my" > proposal. Also, because aliases are non-lvalue definitions, I don't > think '=' makes a lot of sense, but I'm not an expert on the matter. > No, they are all additive and backwards-compatible changes. (the old syntax would persist as an alternative) And in D the lhs of a = initializer is not required to be an lvalue anyway: enum x = 1; |
January 28, 2012 Re: Alternative template instantiation syntax | ||||
---|---|---|---|---|
| ||||
Posted in reply to Timon Gehr | > No, they are all additive and backwards-compatible changes.
Ahh I see now, that makes sense.
|
Copyright © 1999-2021 by the D Language Foundation