Я пишу программу-схему, которая оценивает список с оператором в конце.
Пример: (вычислить '(1 2 +)) --> 3
У меня есть функция, работающая для основных операторов (+, -, *, /), но проблема возникает, когда у меня есть вложенный список.
Пример: (вычислить '(1 (2 3 +) *)) --> (ничего)
Я пропустил условие?
(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)))))))))