Future of string lambda functions/string predicate functions

Jakob Ovrum jakobovrum at gmail.com
Wed Aug 7 03:03:55 PDT 2013


On Wednesday, 7 August 2013 at 09:12:41 UTC, monarch_dodra wrote:
> Also, and this is important (!): A lambda is *always unique*, 
> whereas strings alias each other. This means that:
>
> sort!"a > b"(1, 2, 3); //Both generate the same template
> sort!"a > b"(1, 2, 3); //
>
> sort!((a, b) => a > b)(1, 2, 3); //Generates two different 
> templates
> sort!((a, b) => a > b)(1, 2, 3);
>
> This is particularly relevant for *struct* that take preds.
>
> Imagine:
> Sorter!"a > b" sorter1;
> Sorter!"a > b" sorter2;
> static assert(typeof(sorter1) == typeof(sorter2)); //Passes
>
> But
> Sorter!((a, b) => a > b) sorter1;
> Sorter!((a, b) => a > b) sorter2;
> static assert(typeof(sorter1) == typeof(sorter2)); //Fails

Ew. I don't see this as a good argument. Code and strings are 
fundamentally different.

All the following functionally equivalent string lambdas will 
produce different instantiations of Sorter:

     "a > b"
     "b < a"
     "a<b"
     " a < b"

etc.


More information about the Digitalmars-d mailing list