was mich sonst noch bedrückt:
Ich möchte gerne eine Liste von Zahlen sortieren.
Hier mein Versuch:
[code:1](define (reverse list)
(cond
[(empty? list) empty]
[else
(helper list)]))
(define (helper list)
(cond
[(empty? (cdr list)) (car list)]
[else
(cons (helper (cdr list))
(car list))]))
[/code:1]
Hier ein Beispiel:
[code:1](define test (list 1 2 3 4 5))
(reverse test)
((((5 . 4) . 3) . 2) . 1)[/code:1]
Meine Funktion dreht die Liste also schön um, macht aus der Liste dann jedoch verschachtelte Paare (wenn ich das richtig verstanden habe).
Eigentlich ist mir sogar das Problem bekannt:
[code:1] (cons (helper (cdr list))
(car list))]))
[/code:1] generiert immer ein neues Paar mit einer Liste und einem einzelnen Objekt, weshalb die Verschachtelung auftritt.
Trotz dieser EInsicht weiss ich mir leider aufgrund mangelnder Scheme-Kenntnissen nicht zu helfen. Wenn ich die Therie richtig verstanden habe, sollte ich cons mit einem empty verwenden, damit eine Liste und nicht ein Paar entsteht. Wie kann ich das realisieren?
Ich möchte gerne eine Liste von Zahlen sortieren.
Hier mein Versuch:
[code:1](define (reverse list)
(cond
[(empty? list) empty]
[else
(helper list)]))
(define (helper list)
(cond
[(empty? (cdr list)) (car list)]
[else
(cons (helper (cdr list))
(car list))]))
[/code:1]
Hier ein Beispiel:
[code:1](define test (list 1 2 3 4 5))
(reverse test)
((((5 . 4) . 3) . 2) . 1)[/code:1]
Meine Funktion dreht die Liste also schön um, macht aus der Liste dann jedoch verschachtelte Paare (wenn ich das richtig verstanden habe).
Eigentlich ist mir sogar das Problem bekannt:
[code:1] (cons (helper (cdr list))
(car list))]))
[/code:1] generiert immer ein neues Paar mit einer Liste und einem einzelnen Objekt, weshalb die Verschachtelung auftritt.
Trotz dieser EInsicht weiss ich mir leider aufgrund mangelnder Scheme-Kenntnissen nicht zu helfen. Wenn ich die Therie richtig verstanden habe, sollte ich cons mit einem empty verwenden, damit eine Liste und nicht ein Paar entsteht. Wie kann ich das realisieren?