Измените обработку cond
В языке Scheme есть дополнительная разновидность синтаксиса вариантов
cond
,
(<test> => <recipient>)
. Если результат вычисления
<test>
оказывается истинным значением, то вычисляется
<recipient>
. Его значение должно быть одноместной процедурой; эта процедура вызывается со значением
<test>
в качестве аргумента, и результат этого вызова возвращается как значение выражения
cond
. Например,
(cond ((assoc ’b ’((a 1) (b 2))) => cadr)
(else false))
имеет значение
2
. Измените обработку
cond
так, чтобы она поддерживала этот расширенный синтаксис.
I think the test code won't work as expected. For example, when running the first test case
The
condwill be evaluated before callingeval(applicative order). In other words, the above test case will actually beWhen calling
eval, the formal parameterexpwill be2, not a list expected