3
sry關於愚蠢的方式我在這裏解釋了這個問題的一些解釋:我正在用javascript進行lambda微積分實驗,並且遇到一些小問題。 (你不必知道拉姆達演算任何事情來幫助我)功能返回值,而不用用給定參數替換變量
我有這個功能(教會數字1 BTW):
function num1(c) {
return function(x){
return c(x);
}
}
alert(num1)
行爲與預期,並給出確切的同樣的事情,以上。
alert(num1(num1))
行爲不意外,並給出:
function (x) {
return c(x);
}
爲什麼不JavaScript和功能NUM1替換 'C'?但
alert(num1(num1)(num1))
給出:
function (x) {
return c(x);
}
,並表明了第一個C是在事實上取代了功能它應該。 如果「C」就不會被替換,那麼這一切都不會發生:
(num1(num1)(num1))=
(function (x) {return c(x);}(num1=
c(function num1(c) {
return function(x){
return c(x);
}
})
所以,這一切的一切,代碼是做什麼它應該,但它不輸出功能與'c'被替換。我能做什麼?後來,我會更多的功能,然後我不能告訴num1(asd)
和num1(jkl)
分開,因爲'c'不會被取代。
非常感謝您的幫助!
Someonelse
貌似你試圖抓住'Y型combinatorial' ... – SexyBeast
我知道Y-combinator以及它如何工作(但不是爲什麼;)),我可以在紙上使用它。我還不知道我最終想用JS來做什麼,但這個例子只是簡化了我的實際問題:S-和K-Combinator克服了同樣的愚蠢行爲。 – someonelse
[FAQ](http://stackoverflow.com/faq)會告訴你如何在你的問題中格式化代碼。 – Pointy