On type functions vs T...

12345swordy alexanderheistermann at gmail.com
Tue May 5 23:06:59 UTC 2020


On Tuesday, 5 May 2020 at 19:34:02 UTC, H. S. Teoh wrote:
> On Tue, May 05, 2020 at 06:57:04PM +0000, Stefan Koch via 
> Digitalmars-d wrote: [...]
>> templates are  NOT THE RIGHT TOOL.
>> It's a hack.
>> It's ugly.
>> It leads to tons of complications.
>> The implementation of type functions is actually very simple 
>> compared
>> to templates.
>> That's why I am going that route rather than putting more 
>> strain on
>> the template system
>> which already over-strained because of the constant misuse as
>> computational instrument.
>
> Couldn't agree more!  Templates are supposed to be used for 
> parametrization over types (and other compile-time values), but 
> they're not intended for actual *computation*.  Just because 
> they happened to be Turing-complete (which is something the C++ 
> people discovered after the fact -- it wasn't designed to be 
> that way), doesn't mean they should actually be used for 
> computations.
>
> Abusing templates for computations leads to a litany of 
> well-known symptoms, like exorbitant memory consumption by the 
> compiler, ridiculously-long emitted symbols (remember the bad 
> ole days before Rainer implemented symbol backreferences? A 
> single symbol could be hundreds of KB long), excessively long 
> compile times, and template bloat in the resulting executable.  
> Which probably were a big cause of template haters among the 
> C++ crowd (there are certain minorities of C++ programmers who 
> institute project-wide bans on template use -- some of them 
> would probably turn away from D just by the mere word 
> "template").
>
> Compile-time computation should be done by a proper tool for 
> the job: CTFE, in D's case. Thanks to the D compiler's 
> smartness in interleaving CTFE with AST manipulation, there is 
> no loss of expressive power in doing so; in fact, moving 
> manipulation of type lists aka tuples (whatever they're called 
> these days, after all these years of back and forth we still 
> don't have a good word for them) to CTFE probably makes it even 
> more powerful, because now more complex manipulations are 
> within easy grasp without the exorbitant memory / total compile 
> time cost.
>
> tl;dr: I can't wait for newCTFE and typelist/tuple manipulation 
> to land in master. ;-)
>
>
> T

Which hopefully will provide a better syntax then the whole 
tuples!() aliaseq!() that the phobos library currently provide.


More information about the Digitalmars-d mailing list