D's treatment of values versus side-effect free nullary functions

Walter Bright newshound2 at digitalmars.com
Wed Jul 21 01:20:31 PDT 2010


Don wrote:
> While running the semantic on each function body, the compiler could 
> fairly easily check to see if the function is CTFEable. (The main 
> complication is that it has to guess about how many iterations are 
> performed in loops). Then, when a CTFEable function is called with 
> compile-time constants as arguments, it could run CTFE on it, even if it 
> is not mandatory.

I think this is the halting problem, and is insoluble.

This is why the language does CTFE in well-defined circumstances and the CTFE 
must succeed else a compilation time error.

I'm not seeing CTFE as a credible optimization tool, either, as none of my 
programs would benefit at all from it. For example, what's a text editor going 
to precompute?


More information about the Digitalmars-d mailing list