Ich habe zwar eine Liste aufgerufen und überprüft, ob es gerade oder ungerade wäre, würde so funktionieren. Es wird angenommen, eine Liste [2 6 4 5] zu nehmen und jedes Element zu prüfen, das an einer geraden Position ist und t oder f zu drucken. [2 #t 4 #f]. Ich weiß, dass ich versuche, Modulo auf einer Liste zu machen, was wahrscheinlich den Fehler verursacht. Gibt es eine Möglichkeit, nach der aktuellen Liste zu suchen und zu prüfen, ob sie gerade oder ungerade ist?Vertragsverletzungsschema Logik
modulo: contract violation
expected: integer?
given: '(2 3 4)
argument position: 1st
other arguments...:
(define (isEven E)
(if(= (modulo E 2) 0) #t #f))
(define (evenEE L)
(if (or (null? L) (null? (cdr L)))
L
(cons (car L)
(cons (isEven)
(evenEE (cddr L))
))))
Sie haben Recht, cdr würden Sie können
Also das ganze Programm sollte wie folgt aussehen
mit ersetzen schau dir die ganze Liste an. Cadr würde nur auf das Currentelement schauen. – Learning
@Learning Froh, dass ich helfen könnte. Wenn Sie zufrieden sind, können Sie die Antwort als akzeptiert markieren. –