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

Reply via email to