2011-11-04 13 views
5

Ecco il mio codice:non ottieni 7 (7) fuori dalla lista?

(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)))))) 

)) 

L'esecuzione di questo codice di causa un errore:

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

Qual è il problema?

risposta

6

Inizio piccolo.

(define mylist '(1 2 3)) 

(display mylist) 

(display (car mylist)) 

(display (car (mylist))) 

Esegui ognuno di questi a turno e guarda cosa ottieni ad ogni passaggio. Una volta compreso il motivo per cui ottieni l'output, dovresti essere in grado di correggere il codice nella tua domanda.

+1

"Start small" è un eccellente consiglio. – sarnold

+0

Ottima risposta! Vorrei che ce ne fossero di più qui intorno. –

2

In Schema, le parentesi (non quotate) indicano l'applicazione della funzione. Quindi (car (step1_list2)) tenta di eseguire step1_list2 come procedura (e quindi prendere l'auto del risultato). Invece, si desidera:

(car step1_list2)