Christoph wrote: > a = lambda {|x,| x } > b = lambda {|y,| y } > > c = b * a > p a.arity, c.arity # 1, -1 OK, I see your point. > --- > k = 35 > a = lambda {|x,y| [k + 2 * x, k + 3 * x] } > b = lambda {|t,s| t + s } > > c = b * c > > c[1,1] = = 75 # true > --- I don't understand your example. I guess, you wanted to write c = b*a but what do you expect to be the result of the composition of a two variable function and a two variable function? A two variable function returning a one variable function? But this does not match your example... Perhaps you wanted to write c[1,1][k] == 75 ? > - this should work with essentially all in and out going > arities. Of course one can do it but it is more tedious > then you might think (which was my sole point) . OK, I admit that in this generality it is not so simple in Ruby as in (***)ML. Now, let us be honest, is it so important? I do a lot of meta-programming, but I have never encountered a situation requiring such a high level approach. Regards, Christian