Ruby 反向柯里化:这可能吗?

2024-05-09

关于 Ruby 1.9.x 中的柯里化,我一直在某些地方使用它,并且可以像基本上支持 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

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

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

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


我认为没有直接的方法可以做到这一点,而且你所做的有点狡猾,可能有比反柯里化更好的解决方案来解决你的问题

为了达到预期的结果,你可以做的就是在你的过程周围包裹更多的过程:

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

事实上,你可以以任何你想要的方式重新排列参数,但相信我,它会变得混乱very quickly

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ruby 反向柯里化:这可能吗? 的相关文章

随机推荐