對於一個大學項目,我們正在研究學習計劃,但是我們已經被投入了一個幾乎沒有知識的艱鉅任務。我們給了某些函數,如「let」,「cond」,「and'」等,並要求添加宏。在計劃中添加宏
(define eval
(λ (e env)
(cond ((symbol? e) (lookup-var e env))
((not (list? e)) e) ; non-list non-symbol is self evaluatory
;; special forms go here:
((equal? (car e) 'λ) ; (λ VARS BODY)
(let ((vars (cadr e)) (body (caddr e)))
(list '%closure vars body env)))
((equal? (car e) 'if)
(eval_ (if (eval_ (cadr e) env) (caddr e) (cadddr e)) env))
((equal? (car e) 'quote) (cadr e))
;; Add More Macros Here:
;; ((equal? (car e) 'let) xxx)
;;((equal? (car e) 'cond) xxx)
;;((equal? (car e) 'and) xxx)
;((equal? (car e) 'or) xxx)
(else (let ((eeoe (map (λ (e0) (eval_ e0 env)) e)))
(apply_ (car eeoe) (cdr eeoe)))))))
所以基本上我們被要求填寫空格,';;'評論是。 我試着做了「COND一部分,並得到這個
((equal? (car e) 'cond)
(env (cdr e) env))
但我不知道,如果它是正確的(方案不甚瞭解)。任何幫助解決這個問題將非常感激。謝謝。