Doug McIlroy wrote:
specialize(unary,binary,value) produces a unary operation
by fixing the value of one the operands of a binary operation.

define(add,`($1+$2)')
define(div,`($1/$2)')
define(specialize,`define($1,`$2('$`1,$3)')')
specialize(succ,`add',1)
specialize(half,`div',2)

With these definitions, half(succ(4)) expands to ((4+1)/2)
Thanks, Doug! Works for me.

Now I've got closure on closures! :)

--
Jack J. Woehr     # For in the idea of chess and the development
www.well.com/~jax # of the chess mind we have a picture of the
www.softwoehr.com # intellectual struggle of mankind. – Richard Reti


Reply via email to