我试图翻译Lisp代码(在Abelson/Sussman MIT course中找到)
(define (cons a b)
(lambda (pick)
(cond ((= pick 1) a)
((= pick 2) b))))
(define (car x) (x 1))
(define (cdr x) (x 2))
(car (cons 2 4))
到JavaScript(fiddle)
function cons(a, b){
return function(x){
if(x === 1){
return a;
}
else if(x === 2){
return b;
}
}
}
function car(x){
x(1);
}
function cdr(x){
x(2);
}
console.log(car(cons(2,4)));
JavaScript中的结果是undefined
。我已在调试器中跟踪它,虽然cons
然后car
返回所需的值,但当涉及到控制台(或警报或分配给变量)时,结果总是{{1 }}
在JavaScript中实现(或使用)这个的正确方法是什么?它有可能吗?
答案 0 :(得分:0)
愚蠢的错误,我忘了回来:
function car(x){
return x(1);
}
function cdr(x){
return x(2);
}