Folding similar templates into one

Meta jared771 at gmail.com
Fri Jun 28 15:28:37 PDT 2013


On Friday, 28 June 2013 at 13:20:47 UTC, monarch_dodra wrote:

> What is a "string lambda" ? Do you mean "a string alias latter 
> parsed as an expression", or "an actual lambda function".

The former. I didn't think it was *that* obscure of a term 
(https://www.google.com/search?q=%22string+lambda%22+site:forum.dlang.org).

> There were talks about this recently in learn: If you *type* 
> the same lambda function twice, it *will* generate two 
> different templates.
> http://forum.dlang.org/thread/rufkccowcdogctvckzar@forum.dlang.org

I'm not sure if that's due to this bug or not: 
http://forum.dlang.org/thread/jdbhas$2ftb$1@digitalmars.com?page=2#post-jdcn98:241mg9:244:40digitalmars.com

> However,
>
> --------
> enum PRED = () => 1;
>
> struct S(alias pred){}
>
> void main()
> {
>     auto a = S!PRED();
>     auto b = S!PRED();
>     a = b;
> }
> --------
> This is fine.

If that's all it takes to avoid copies, then maybe it's not so 
big of a problem for lambdas.

> From testing, *string* preds don't have this "feature"/"bug" 
> (?), even if you compile time build them, the compiler will 
> "see" that it is the same string (probably true for integrals 
> and whatnot). But for lambdas, only their *name* counts (eg 
> __lambda1__). So if you plan to re-use a lambda, it *must* be 
> stored in a way the compiler can "see" its unicity, and not 
> typed more than once.

Ditto.


More information about the Digitalmars-d mailing list