------------------------------------更新---------- ---------------------------
我可以用它很好地工作。
(define (handle-cond exp env)
(if (null? exp) (newline)
(if (eq? (caar exp) 'else) (my-eval (cadar exp) env)
(if (my-eval (caar exp) env) (my-eval (cadar exp) env) (my-eval (cons 'cond (cdr exp)) env)))))
这与系统的cond之间的区别仅在于没有条件时, 它会打印一个#void,我不太明白为什么,但除此之外,它运行正常。 谢谢大家回答。
答案 0 :(得分:1)
您必须将cond
语句转换为一系列嵌套if
。因此,假设每个cond
子句都是这样的:
(cond
(<expr1> <expr2>)
(<expr3> <expr4>)
(else <expr5>))
这将成为:
(if <expr1>
<expr2>
(if <expr3>
<expr4>
<expr5>))