我现在正在学习sicp并且做了ex2.23我已经修改了以下代码:
(define (for-each proc items)
(if (null? items)
#t
((proc (car items))
(for-each proc (cdr items)))))
Run Code Online (Sandbox Code Playgroud)
但在运行时,会导致错误:程序应用程序:预期程序,给定:#; 参数是:()
我想我知道原因:我以递归方式调用for-each函数,每个调用for-each想要返回值
但是当我修改代码时:
(define (for-each proc items)
(cond ((null? items) #t)
(else (proc (car items)) (for-each proc (cdr items)))))
Run Code Online (Sandbox Code Playgroud)
它运行良好.我不明白,为什么?在cond中,是否每次都要求 - 每个都不需要返回值?
我使用DrScheme,并选择语言SICP
我不是母语英语的人,所以如果有一些没有清楚描述的话,请告诉我