Internally recursion with map

Justin Whear justin at economicmodeling.com
Thu Aug 9 15:28:10 PDT 2012


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.


More information about the Digitalmars-d-learn mailing list