"temporary" templates
Steven Schveighoffer
schveiguy at gmail.com
Wed Nov 27 16:32:13 UTC 2019
On 11/27/19 11:15 AM, Steven Schveighoffer wrote:
> What I am proposing is that you can mark items as @temporary or
> something like that, and those templates will be reevaluated each time.
> And in the case of something like hasFoo, I'd argue it's just a thin
> wrapper over a __traits call, so it probably should be reevaluated each
> time.
Think of it like "weak pure". In strong pure functions, the result is
always the same, because the data passed in is always the same. But weak
pure functions can be used inside those functions even though their
parameters and results can be mutable. It allows for much more pleasant
experience.
It allows one to have the public template as "this is final, once it's
evaluated, store it and it's always the same." But the innards, which
can be hairy, complex, horribly performing and used only once (or maybe
a couple times), can be left to the GC, because once the head is
finalized, they won't be instantiated with those parameters again.
The more I think about it, the more I like the CTFE with Types as first
class approach, because then I can use actual mutating code vs.
immutable functional approach that is required with templates.
-Steve
More information about the Digitalmars-d
mailing list