我尝试将此Scheme代码翻译为Javascript:
(define (double f)
(lambda (x) (f (f x))))
(define (inc x) (+ x 1))
((double inc) 0)
Run Code Online (Sandbox Code Playgroud)
((double inc) 0)
意思是(inc (inc 0))
,所以它返回2.
这是我的Javascript代码:
var double = function(f){
return function(x) { f(f(x)); }
}
var inc = function(x) {return x+1;}
double(inc)(0);
Run Code Online (Sandbox Code Playgroud)
但是double(inc)(0)
返回未定义,而不是2.为什么?
小智 8
var double = function(f){
return function(x) { return f(f(x)); }
}
var inc = function(x) {return x+1;}
double(inc)(0);
Run Code Online (Sandbox Code Playgroud)
小错误:)应该与返回一起工作.
如果函数没有返回任何内容,它实际上返回undefined.在你的双重函数中,你有一个返回"nothing"=>你得到未定义的函数.
你错过return
了double
功能:
var double = function(f){
return function(x) {return f(f(x)); }
}
var inc = function(x) {return x+1;}
double(inc)(0);
Run Code Online (Sandbox Code Playgroud)