我正在学习SICP并进行编程练习。我对练习4.5有疑问。练习4.5是:
Scheme允许使用
cond
子句(<test> => <recipient>)
的附加语法。如果<test>
评估为真值,则评估<recipient>
。它的价值必须是一个论证的过程;然后在<test>
的值上调用此过程,并将结果作为cond
表达式的值返回。例如:
(cond
((assoc 'b '((a 1) (b 2))) => cadr)
(else false))
如上所示,如果<test>
为真,则cond
子句的值应为(<recipient> <test>)
(即
然后对
<recipient>
进行评估。它的价值必须是一个论证的过程;然后在<test>
的值上调用此过程,并返回结果...
但是当我在互联网上搜索解决方案时,我发现的几乎所有都是(list (extended-cond-recipient first) (extended-cond-test first))
。这是一个由<recipient>
和<test>
组成的列表,而不是函数调用。我该怎么办?它困扰了我很久......