そのため、プログラミング言語クラスの演習問題に取り組んでおり、課題の 1 つは、簡単なネストされた加算と乗算を実行できるスクリプト「MyEval」を作成することです。したがって、たとえば、プログラムはこれ(MyEval '(1 +(3 *4)))
以上の処理を実行できますが、減算や 2 つ以上の数値と演算子を実行する必要はありません。それほど複雑ではありません。しかし、私の心は揚げられており、いくつかのガイダンスが欲しい. これは私がこれまでに持っているものです
#lang racket
(define ns (make-base-namespace))
(define (MyEval lis)
(cond
[(and ; neither is a list and can be evaluated
(not(list? (car lis)))
(not(list? (caddr lis)))
)
(eval (cons (cadr lis) (list (car lis) (caddr lis)) ) ns)]
[(list? (car lis))
(MyEval (car lis))]
[(list? (caddr lis))
(MyEval (caddr lis))]
) ;end of cond
) ;end of define
しかし、皆さんが気付くかもしれませんが、これは最後の内括弧のみを解決するので、そうすると(MyEval '(1 + (1 + 2)))
4 ではなく 3 になります。適切な私に知らせてください。
ありがとうございました!