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