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