On Wed, Aug 14, 2013 at 09:10:37AM +0200, Tyler Jameson Little wrote:
> 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).
[...]
> 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?

That's a bit too terse. What about this:

        less            // a < b
        less!(5)        // a < 5
        lessEq          // a <= b
        lessEq!(5)      // a <= 5
        more            // a > b
        more!(5)        // a > 5
        moreEq          // a >= b
        moreEq!(5)      // a >= 5
        equal           // a == b
        equal!(5)       // a == 5
        notEqual        // a != b
        notEqual!(5)    // a != 5


T

-- 
A computer doesn't mind if its programs are put to purposes that don't match 
their names. -- D. Knuth

Reply via email to