August 09, 2012 Internally recursion with map | ||||
---|---|---|---|---|
| ||||
This code fails to compile with a forward reference error: auto descendantsOf(Node* node) { return join( node.children, join(node.children.map! (descendantsOf).array) ); } Obviously, while functions can be internally recursive and call themselves, it appears that they can't use themselves as template parameters. The Y combinator still blows my mind, so does anyone have any ideas about how I could rewrite this without making it super ugly? |
August 09, 2012 Re: Internally recursion with map | ||||
---|---|---|---|---|
| ||||
Posted in reply to Justin Whear | On Thu, 09 Aug 2012 22:03:16 +0000, Justin Whear wrote:
> This code fails to compile with a forward reference error:
>
> auto descendantsOf(Node* node)
> {
> return join( node.children, join(node.children.map!
> (descendantsOf).array) );
> }
>
> Obviously, while functions can be internally recursive and call themselves, it appears that they can't use themselves as template parameters. The Y combinator still blows my mind, so does anyone have any ideas about how I could rewrite this without making it super ugly?
Ah, figured it out. If I declare the return type as Node*[] instead of auto and am careful to collapse the ranges to arrays, it does work.
|
Copyright © 1999-2021 by the D Language Foundation