所以我正在爲我的編程語言類工作一些練習題,其中一個任務是創建一個腳本「MyEval」,它允許您執行簡單的嵌套加法和乘法。 因此,例如程序將能夠做到這一點(MyEval '(1 +(3 *4)))
或更深,但不必做減法或超過2個數字和一個操作符。所以不那麼複雜。然而,我的腦海裏炸了,我會喜歡一些指導。 這是我迄今爲止DrRacket中的簡單嵌套評估
#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)))
我得到3,不是4 任何指導或尖端讚賞,我不知道我的標題有多準確,但如果不恰當,請告訴我。
謝謝!
注意:請不要**使用您的環境的基礎'eval'。如果你這樣做,你誤解了這項任務。 – dyoo