Schema - Map-Funktion für die Anwendung einer Funktion auf die Elemente in einer verschachtelten Liste

Ich versuche zu schreiben, ein mapping-Funktion in Schema wendet eine Funktion auf jeden Wert in eine geschachtelte Liste.

Beispielsweise (map number? '(3 (2 A) 2 Z) zurückkehren sollte (#t (#t #f) #t #f)

Hier ist, was ich habe, so weit:

(define (map fun lst)
    (if (null? lst) '()
        (if (list? (car lst)) 
            (cons (map fun (car lst)) (map fun (cdr lst)))
                 (cons (fun (car lst)) (map fun (cdr lst))))))

Es funktioniert, wenn sich die verschachtelte Liste ist auf der Vorderseite der Liste. Zum Beispiel (map number? '((3 A) 2 Z)) richtig zurück ((#t #f) #t #f)

Das problem tritt auf, wenn sich die verschachtelte Liste tritt auf, nachdem ein weiteres element der ursprünglichen Liste.
Zum Beispiel (map number? '(3 A (2 Z))) falsch zurück (#t #f #f) [Das Ergebnis sollte (#t #f (#t #f))]

Wie kann ich mein Algorithmus, um dies zu korrigieren?

InformationsquelleAutor ben.coffee | 2011-04-18
Schreibe einen Kommentar