1

这是我的代码:

def f x
  x
end

g = method(:f).to_proc.curry.(123)

p g

我想g成为一个不带参数并适用123f. 相反,g包含应用程序的结果。

我这样做是不是很复杂?

编辑:是的,g = lambda {f 123}有效,但我在问如何咖喱f

4

2 回答 2

4

咖喱的文档说

如果提供了足够数量的参数,它会将提供的参数传递给原始 proc 并返回结果。

所以在这种情况下,从理论的角度来看,你并没有真正对你的函数进行柯里化,但实际上你已经做到了。这

g = lambda {f 123}

似乎更接近返回函数的精神,然后您可以调用该函数进行评估,至少在确定所有参数后。

于 2013-02-08T17:50:01.857 回答
-1

也许您想将函数包装f在 a lambda(评估 f)中。然后你可以对lambda表达式进行柯里化,如下所示:

g = lambda{f 123}.curry
p g[] // or g.call

现在g是可调用的,不带参数。

于 2016-02-12T19:51:19.617 回答