On 4/27/16 1:04 PM, Andrei Alexandrescu wrote:
On 04/27/2016 11:44 AM, Steven Schveighoffer wrote:
On 4/27/16 8:31 AM, Andrei Alexandrescu wrote:
On 04/26/2016 03:45 PM, Jack Stouffer wrote:
I think that the drawback you mentioned does not outweigh the benefits
gained from using actual lambdas.
Actually it turns out to be a major usability issue. -- Andrei
Yes, consider that RedBlackTree!(int, (a, b) => a > b) is going to be a
different type every time you use it, even if they are 1 line apart!
There are actually 2 things the string lambdas have going for them: 1)
common instantiation for every usage, and 2) avoiding parentheses with
instantiation (impossible to do with a short lambda syntax).
I'd still vote for them to go, but we MUST fix the issue with common
instantiation first.
There has been some discussion in general of using hashing to decrease
the symbol size for templates, and some discussion about allowing the
compiler to merge identical binary functions to reduce the size of the
binaries. Both of those could play in nicely here.
Yes, you get it exactly right. I think a DIP would be warranted here to
clarify how lambda equivalence is computed. Could you please draft one?
I started thinking about this, I'm probably not the best to do this by
myself, as I'm not familiar with the compiler code. I'm thinking
possibly we should talk about this next week in person?
BTW, one of the issues with the DIP system I see is that the table for
DIPs is not auto-generated, so there is a stray dip which hasn't been
finished and no entry in the table: http://wiki.dlang.org/DIP89
-Steve