2011-11-04 51 views
5

這裏是我的代碼:從列表中得到7不是(7)?

(define step1_list1 '(1 3 (5 7) 9)) 

    (car (cdr (cdr (step1_list1)))) 


    (define step1_list2 '((7))) 

    (car (step1_list2)) 


    (define step1_list3 '(1 (2 (3 (4 (5 (6 7))))))) 

    (car (cdr (cdr (cdr (cdr (cdr step1_list3)))))) 

)) 

運行此代碼導致錯誤:

(1 3 (5 7) 9) is not applicable 

問題是什麼?

回答

6

從小開始。

(define mylist '(1 2 3)) 

(display mylist) 

(display (car mylist)) 

(display (car (mylist))) 

依次運行所有這些程序,並查看您在每個步驟中獲得的結果。一旦你明白你爲什麼得到你所做的輸出,那麼你應該能夠修復你的問題中的代碼。

+1

「從小開始」是非常好的建議。 – sarnold

+0

很好的答案!我希望這裏有更多的喜歡它。 –

2

在Scheme中,(非引號)括號表示函數應用程序。所以(car(step1_list2))會嘗試執行step1_list2作爲一個過程(然後將結果帶到汽車中)。相反,你想要:

(car step1_list2)