On 4/21/15 3:00 PM, Meta wrote:
On Tuesday, 21 April 2015 at 17:30:08 UTC, Steven Schveighoffer wrote:
quoted lambdas are indeed shorter, but the issue with them is that
"a<b" instantiates a different template than "a < b", whereas the
lambda does not.
In fact, that is why we added shorthand lambdas to the language. Note
that in this case, it's just wasted code space and not a real issue.
but for example, RedBlackTree!(int, "a < b") is not compatible with
RedBlackTree!(int, "a<b"), even though they are identical.
I'm not saying we shouldn't allow string lambdas, just that we
shouldn't encourage them as "proper" D code.
Unfortunately, it doesn't work at all for lambdas.
RedBlackTree!(int, (a, b) => a < b) tree1;
RedBlackTree!(int, (a, b) => a < b) tree2;
//Fails
assert(is(typeof(tree1) == typeof(tree2)));
What? I thought this was the entire point of these?
Hm... let me dig it up.
https://issues.dlang.org/show_bug.cgi?id=10819
http://forum.dlang.org/post/jnlqesrwxfekdsxje...@forum.dlang.org
Looks like that's not solved :(
I was sure we introduced this to fix this string quirkiness problem, but
I am wrong. I can't find the discussion I remember about this triggering
the new syntax.
Is there any possibility to move towards a solution where two identical
context-free lambdas are equivalent when generating a template?
There were also some pretty good ideas in that thread I referenced that
never got fleshed out.
-Steve