2015-12-03 105 views
0

當我運行下面的代碼時,我得到這個TypeError。我認爲這是因爲我試圖使用「null?」測試一個空列表。爲什麼會造成錯誤?當我嘗試測試空列表時,爲什麼在Scheme中出現錯誤?

TypeError: Cannot read property 'apply' of undefined [NumberLister, NumberLister, NumberLister, NumberLister, NumberLister, car]

(define NumberLister(lambda(numberList) 

(if(null? numberList) 
    (= (+ 1 1) 2) 
) 

(display (car numberList)) 
(display "\n") 
(NumberLister (cdr numberList)) 
) 
) 

(NumberLister '(1 3 5 6)) 
+0

您的遞歸是無條件的 - 請檢查您的括號。 – molbdnilo

回答

4

通常,如果需要的組中的表達式begin形式你不能把一個以上的表達在if表達的結果或可替換的部分。另外,(= (+ 1 1) 2)有什麼用?只需返回#t,像這樣:

(define NumberLister 
    (lambda (numberList) 
    (if (null? numberList) 
     #t 
     (begin  
      (display (car numberList)) 
      (display "\n") 
      (NumberLister (cdr numberList)))))) 
相關問題