Zitat Zitat von dasDull
Edit: Ich glaube dein Programm fügt nicht ein x vor jedem y ein, sondern nur vor dem ersten y. Kann das sein?
Da hast Du recht. Is mir gar nicht aufgefallen. Aber stimmt. Damit es bei jedem x ein y einschiebt, müsste man

Code:
(define (insertbefore3 x y ls)
  (cond
    ((null? ls) '())
    ((eq? (car ls) x)(cons (car ls)(insertbefore3 x y (cdr ls)))
    (else (cons (car ls)(insertbefore3 x y (cdr ls)))))))
Aber da wehrt sich das Programm grade dagegen.
Code:
else: not allowed as an expression in: (else (cons (car ls) (insertbefore3 x y (cdr ls))))
Kann auch sein, dass es einfach schon zu spät ist.