나는 끝에 연산자를 사용하여리스트를 평가하는 계획 프로그램을 작성 중이다.스킴 프로그램이 중첩 목록을 평가하지 않습니까?
예 : (평가 '(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)))))))))
아, 지금 문제가 있습니다. 나는 내 진술이 어떤 이유로 든 밖으로 생각한 것으로 생각했다. 재귀 적으로 함수를 호출하는 것을 완전히 잊었다. 나는 Scheme을 처음 사용하기 때문에리스트가 어떻게 작동하는지 보는 것은 흥미 롭습니다. 고맙습니다! – Disc0nnect