私は最後にオペレータのリストを評価するスキームプログラムを書いています。スキームプログラムはネストされたリストを評価していませんか?
例:(評価「(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