Ruby Reverse Currying:这可能吗?

关于Ruby 1.9.x中的currying,我一直在某些地方使用它,并且可以像基本上支持默认参数一样转换为proc参数:

p = proc {|x, y, z|x + y + z} p.curry[1] #=> returns a lambda p.curry[1, 2] #=> returns a lambda p.curry[1, 2, 3] #=> 6 p2 = p.curry[1, 2] p2.(2) #=> 5 p2.(4) #=> 7 

非常方便,对吗? 事情是,我希望能够反向curry,这意味着,用随机值填充我的proc的最后一个参数。 像这样:

 p = proc{|x, y| x - y }.curry[1] p.(4) 

我想要的结果是3.这会返回-3。

我认为没有直接的方法可以做到这一点,你正在做的事情有点狡猾,可能有更好的解决方案来解决你的问题。

你可以做些什么来达到预期的结果是在你的procs周围包含更多的procs:

 p = proc{|x, y| x - y} q = proc{|y, x| p[x, y]} q.curry[1].(4) 

事实上,您可以按照自己想要的方式对参数进行重新排序,但相信我会很快变得混乱