December 24, 2012
On Sunday, 23 December 2012 at 15:05:16 UTC, Namespace wrote:
> On Sunday, 23 December 2012 at 14:55:30 UTC, bearophile wrote:
>> Namespace:
>>
>>> Shouldn't we fix this? Most of the Newcomer are confused with the fact,
>>
>> Take a look in bugzilla. I opened an enhancement request to fix this situation, but Walter has closed it down. The rationale is to keep uniform the way D manages tags like const, immutable, etc.
>>
>> I don't agree with him in this case: I agree that uniformity is good, but breaking symmetry is acceptable when it just produces an error and when it helps avoid a common mistake.
>>
>> If you have strong desires about fixing this, then I suggest you to open a new thread about it in the main D newsgroup. I have already fought this battle and I lost. (And I think this time Jonathan was on my side).
>>
>> Bye,
>> bearophile
>
> I have to write "const (ReturnType)"  and "ref ReturnType" ... very symetric. But I think that Walter thinks that this is the best idea, and of course better than that what C++ and other languages do​​. So what should I waste my time with "war" with my limited english knowledge ? ;)
> But thank you, that you tried it.
>
> Maybe this is something for Romulus... :)

"ref" is a function qualifier, not a type qualifier, so you could even write it as:
"const(ReturnType) foo() const ref;"

So technically, it is symetric.

I for one don't think this is a huge problem. There is *some* confusion for those comming from C++, but they (we) have to learn D is not C++. Besides, I like the liberty of putting all qualifiers on the line before the types, including const.

If anything "const" *itself* is VERY confusing for new commers. WAY more than the syntax used to qualify a function with it.
December 24, 2012
On Monday, December 24, 2012 14:32:55 monarch_dodra wrote:
> "ref" is a function qualifier, not a type qualifier, so you could
> even write it as:
> "const(ReturnType) foo() const ref;"
> 
> So technically, it is symetric.

I'm pretty sure that ref is nonsensical in that example. What would ref on a function even mean? It could be used on a function pointer, but then you'd have to have the function keyword in there. It makes no sense on a function prototype like you have there. If that compiles, it's because dmd allows you to put all kinds of modifiers on symbols where the modifier has no effect and arguably shouldn't be legal.

> I for one don't think this is a huge problem. There is *some* confusion for those comming from C++, but they (we) have to learn D is not C++. Besides, I like the liberty of putting all qualifiers on the line before the types, including const.
> 
> If anything "const" *itself* is VERY confusing for new commers. WAY more than the syntax used to qualify a function with it.

You're likely to be told to move the const to the right if one of us notices it on the left in a pull request. I believe that quite a few of us consider it to be bad practice to put it on the left.

- Jonathan M Davis
December 24, 2012
On Monday, 24 December 2012 at 15:52:01 UTC, Jonathan M Davis wrote:
> On Monday, December 24, 2012 14:32:55 monarch_dodra wrote:
>> "ref" is a function qualifier, not a type qualifier, so you could
>> even write it as:
>> "const(ReturnType) foo() const ref;"
>> 
>> So technically, it is symetric.
>
> I'm pretty sure that ref is nonsensical in that example. What would ref on a
> function even mean? It could be used on a function pointer, but then you'd
> have to have the function keyword in there. It makes no sense on a function
> prototype like you have there. If that compiles, it's because dmd allows you
> to put all kinds of modifiers on symbols where the modifier has no effect and
> arguably shouldn't be legal.

Wait, never mind that. I thought that was legal.

I was mentioning the fact that if you want to know if a function returns ref, you have check that function's attributes:

http://dlang.org/phobos/std_traits.html#FunctionAttribute

>> I for one don't think this is a huge problem. There is *some*
>> confusion for those comming from C++, but they (we) have to learn
>> D is not C++. Besides, I like the liberty of putting all
>> qualifiers on the line before the types, including const.
>> 
>> If anything "const" *itself* is VERY confusing for new commers.
>> WAY more than the syntax used to qualify a function with it.
>
> You're likely to be told to move the const to the right if one of us notices
> it on the left in a pull request. I believe that quite a few of us consider it
> to be bad practice to put it on the left.
>
> - Jonathan M Davis

That's the way the ddoc is generated anyways: Everything on the left.
December 24, 2012
On Monday, December 24, 2012 17:25:05 Monarch Dodra wrote:
> That's the way the ddoc is generated anyways: Everything on the left.

Which should probably be fixed IMHO. Regardless, in Phobos or druntime, if const is found on the left, it gets moved to the right.

- Jonathan M Davis
1 2
Next ›   Last »