Ich schreibe ein Schema-Programm, das eine Liste mit dem Operator am Ende auswertet.Scheme-Programm, das verschachtelte Listen nicht auswertet?
Beispiel: (bewerten ‚(1 2 +)) -> 3
Ich habe die Funktion für grundlegende Operatoren arbeitet (+, -, *, /), aber das Problem kommt, wenn ich ein verschachteltes habe Liste.
Beispiel: (bewerten ‚(1 (2 + 3) *)) -> (nichts)
Bin ich eine Bedingung fehlt?
(define (evaluate lis)
(cond
((not (list? lis))
lis)
((list? lis)
(if (equal? (length lis) 3)
(cond
((equal? (cddr lis) '(+))
(+ (car lis) (car (cdr lis))))
((equal? (cddr lis) '(-))
(- (car lis) (car (cdr lis))))
((equal? (cddr lis) '(*))
(* (car lis) (car (cdr lis))))
((equal? (cddr lis) '(/))
(/ (car lis) (car (cdr lis)))))))))
Oh, ich sehe das Problem jetzt. Ich dachte aus irgendeinem Grund, dass meine Aussagen von innen nach außen gingen. Ich habe völlig vergessen, die Funktion rekursiv aufzurufen. Ich bin neu bei Schema, daher ist es interessant zu sehen, wie die Listen hier funktionieren. Vielen Dank! – Disc0nnect