On Wednesday, 14 August 2013 at 05:44:50 UTC, Brad Anderson wrote:
On Wednesday, 14 August 2013 at 02:05:16 UTC, Manu wrote:
Can you give an example where you've actually used a string
lambda before
where the predicate is more complex than a basic comparison?
Surely the solution to this problem is to offer a bunch of
templates that
perform the most common predicates in place of unary/binaryFun?
So rather than: func!((a, b) => a < b)(args)
You use: func!binaryLess(args)
Or something like that?
How about just "less"? It's what C++ STL uses (std::less,
std::greater, std::negate, etc...). In C++, however, you have
to do some truly ugly stuff to actually make use of the
predefined function objects...bind1st...eww (the new C++11 bind
is only marginally better but C++11 does have lambdas now at
least).
The thing that annoys me about string vs proper lambda's, is
that I never
know which one I'm supposed to use. I need to refer to
documentation every
time.
Also, the syntax highlighting fails.
Or imitate bash:
Binary:
- gt: a > b
- ge: a >= b
- lt: a < b
- le: a <= b
- eq: a == b
- ne: a != b
Unary:
- z: (zero) a == 0 (if range, a.empty?)
- n: (non-zero) a != 0
Perhaps this is *too* terse?