
On 09/03/10 10:33, David Sankel wrote:
On Fri, Sep 3, 2010 at 8:04 AM, Stewart, Robert <Robert.Stewart@sig.com>wrote:
Larry Evans wrote:
On 09/03/10 06:33, Stefan Strasser wrote:
In:
lam<I>
I is arity, not nesting, of the lambda expression:
http://bitbucket.org/camior/de-bruijn-bind/src#cl-45
IOW:
\(x1,x2,x3).x1+x2+x3 => lam<3>(arg<0,1>+arg<0,2>+arg<0,3>)
lam<3>(_0_1 + _0_2 + _0_3) (using zero-based indices)
So much more readable, don't you think? ;-)
Yes. I've added the following syntactic enhancements to the code (and updated README) at http://bitbucket.org/camior/de-bruijn-bind
- abs -> lam - var -> arg - some _x_y shorthands for arg<x,y>()
Since most of the time the user will be referring to the arg<0,I>, why not switch args to arg to allow defaulting the 2nd arg for the common case? IOW, something like: template < unsigned ArgIndex , unsigned NestingLevel=0
struct arg ; instead of: template < unsigned NestingLevel , unsigned ArgIndex
struct arg ; This would allow: typedef arg<1> _1; typedef arg<2> _2; ...