私が質問を表現した愚かな方法については申し訳ありませんが、ここにいくつかの説明があります.javascriptでラムダ計算を試していますが、いくつかの小さな問題があります. (私を助けるためにラムダ計算について何も知る必要はありません)
私はこの機能を持っています(教会の数字1 btw):
function num1(c) {
return function(x){
return c(x);
}
}
alert(num1)
期待どおりに動作し、上記とまったく同じ結果が得られます。
alert(num1(num1))
予期せぬ動作をし、以下を与えます:
function (x) {
return c(x);
}
javascript が 'c' を関数 num1 に置き換えないのはなぜですか? しかし
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」が置き換えられた関数を出力していません。私に何ができる?後で、さらに関数を追加しますが、'c' が置き換えられないため、num1(asd)
見分けることができなくなります。num1(jkl)
ご助力ありがとうございます!
だれも