2014-09-05 29 views
1

利弊我想Lisp代碼(在Abelson/Sussman MIT course找到)實現Lisp的在JavaScript

(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返回了所需的值,但在控制檯(或警報或分配給變量)時,結果始終爲undefined

什麼是在JavaScript中實現(或使用)它的正確方法?這有可能嗎?

回答

0

愚蠢的錯誤,我忘記返回:

function car(x){ 
    return x(1); 
} 

function cdr(x){ 
    return x(2); 
} 
+0

務必[接受你的答案(http://meta.stackexchange.com/q/5234/225437)當時間限制(如果有是一)已經結束了! – 2014-09-05 12:15:17