Ich arbeite mich gerade durch "My little Schemer".
Ich versuche gerade eine Funktion zu schreiben die bei:
(insertR 'e 'd '(a b c d f g d h))
=> (a b c d e f g d h)
liefert und bei
(insertR 'e 'f '(a b c d))
=> (a b c d e)
dies ist mein Ansatz:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | (define insertR (lambda (new old li) (cond ((null? li) new) (else (cons (car li) (cond ((eq? old (car li)) (cons new (cdr li))) (else (insertR new old (cdr li))) ) ) ) ) ) ) |
funktioniert soweit, nur bekomme ich im 2. oben angeführten Fall:
=> (a b c d . e)
wo kommt der Punkt her?
Hier ist der Code online zum ausprobieren (letzte Funktion): http://repl.it/NED