【发布时间】:2025-12-03 08:00:01
【问题描述】:
我正在开发一个新的 gem 来扩展 Ruby Core 类,类似于 Active Support Core Extensions 或 Powerpack。这些天我正在研究Proc 课程,例如我添加了closure composition。
但今天我想谈谈柯里化。这是curry 的 Ruby 标准库功能:
describe "#curry" do
it "returns a curried proc" do
modulus = ->(mod, num) { num % mod }
mod2 = modulus.curry[2]
expect(mod2.call(5)).to eq(1)
end
end
我想添加一个新的rcurry 方法来支持proc“正确”柯里化以通过以下规范。这是几个月前报告的同一问题,Proc/Method#rcurry working like curry but in reverse order。
describe "#rcurry" do
it "returns a right curried proc" do
modulus = ->(mod, num) { num % mod }
mod2 = modulus.rcurry[2]
expect(mod2.call(5)).to eq(2)
end
end
【问题讨论】:
-
你的问题是什么?
-
@sawa 我的问题是如何实现
rcurry。 -
所以您希望有人为您编写代码,以便您可以将其作为 gem 发布?
-
发布或不发布 gem 只是一个副产品。这里重要的是知识。我在解决问题时遇到了困难,或者我应该采取什么正确的方法。无论如何,如果这里的主要内容是 gem 的创建,我鼓励你创建一个支持
rcurry的 gem 和 Jordan answer。
标签: ruby lambda closures proc currying