Exquisite code samples
renoX
renozyx at gmail.com
Tue Jul 17 06:30:56 PDT 2012
On Tuesday, 10 July 2012 at 09:24:42 UTC, Don Clugston wrote:
> On 10/07/12 09:49, renoX wrote:
>> On Monday, 9 July 2012 at 11:40:37 UTC, Gor Gyolchanyan wrote:
>> [cut]
>>> You're right. This is a bit advanced code sample, which uses
>>> templates,template constraints, contract programming among
>>> syntax
>>> advantages of D.
>>
>> Hum it show the power of D sure, but IMHO it also show its
>> syntax
>> deficiencies..
>>
>> For me this "real[d] bezier(size_t d, Number)(Number[d][] p,
>> Number t)
>> if(d > 1 && isFloatingPoint!Number)" is difficult to read, and
>> a better
>> syntax would be:
>> real[d] bezier!(size_t d && d > 1, Number &&
>> isFloatingPoint!Number)(Number[d][] p, Number t)
>>
>> The template parameter would be indicated in a !() (as in a
>> call), and
>> the template constraints inside the template parameter: this
>> way the
>> template parameters are clearly indicated and separated from
>> the
>> function parameter.
>>
>> renoX
>
> Well it used to work vaguely in that way, but it gets very ugly
> once you leave the simplest cases. Even that one you've listed
> is hard for me to read.
IMHO, the "normal" way is even harder to read..
> And the idea that constraints apply to individual parameters is
> wrong. If you have a constraint that depends on two template
> parameters, where do you put it?
>
> int bezier (int A, int B)(int t) if ( A + B == 10 )
How about:
int bezier!(int A, int B; A + B == 10)(int t) ?
I think that grouping together template parameters and
constraints helps the readability YMMV.
BR,
renoX
PS: Sorry for the multiple posting, the posting didn't seem to
work so I retried..
More information about the Digitalmars-d
mailing list