這裏是我的代碼:如何討好的方法有一個參數
def f x
x
end
g = method(:f).to_proc.curry.(123)
p g
我想g
是一個可調用不帶參數,適用於123
f
。相反,g
包含應用程序的結果。
我在做這個複雜的方式嗎?
編輯:是的,g = lambda {f 123}
的作品,但我問如何咖喱f
。
這裏是我的代碼:如何討好的方法有一個參數
def f x
x
end
g = method(:f).to_proc.curry.(123)
p g
我想g
是一個可調用不帶參數,適用於123
f
。相反,g
包含應用程序的結果。
我在做這個複雜的方式嗎?
編輯:是的,g = lambda {f 123}
的作品,但我問如何咖喱f
。
如果被提供的參數足夠數量時,它把提供的參數到原始proc和返回結果。
因此,在這種情況下,您並沒有真正地從理論的角度來看待您的功能,但實際上您已經擁有了。
g = lambda {f 123}
似乎更接近於返回一個函數的精神,您可以調用該函數來評估,至少一次所有參數都已確定。
「new」lambda單行語法'g = - > {f 123}' – 2018-03-02 14:52:51
也許你想把你的函數f
包裝在lambda
(評估f)中。然後,你可以咖喱lambda
表達,這樣的事情:
g = lambda{f 123}.curry
p g[] // or g.call
現在g
是可調用不帶任何參數。
這並不真正地加入參數,因爲您在調用方法時仍然需要提供它。 – user1934428 2016-12-06 12:11:08
似乎這是唯一的方法柯里化可以在紅寶石工作! 嘗試'g = method(:f).to_proc.curry [123]',這也適用。 – 2013-02-08 17:43:36
目前'方法(:f).curry [123]'工作正常。我不知道2013年是否屬於這種情況,但您可以放棄_#to_proc_電話。 – 2018-03-02 14:49:27