On Wednesday, 19 March 2014 at 01:28:48 UTC, Manu wrote:You could provide it with a recursion level parameter or parameters for cost level heuristics.
In the case you do want to inline the whole tree, you can just cascade the
mixin through the stack. In the case you suggest which flattens the tree by
default, we've lost control; how to tell it only to do it for one level
without hacks? And I believe this is the common case.
It could also be used to flatten tail-call recursion.
In innerloops to factor out common subexpressions that are otherwise recomputed over and over and over.As the one that requested it, I have numerous uses for it to mixin just the
one level. I can't imagine any uses where I would ever want to explicitly
inline the whole tree, and not be happy to cascade it manually.
When the function is generated code (not hand written).
No, I am saying that the one level mixin doesn't provide you with anything new.noninline_func(){ inline_func();}
Why? This is really overcomplicating a simple thing. And I'm not quite sure
what you're suggesting this should do either. Are you saying the call tree
is flattened behind this proxy non-inline function?
You already have that. It is sugar.