我现在正在学习 sicp 并执行 ex2.23 我编写了以下代码:
(define (for-each proc items)
(if (null? items)
#t
((proc (car items))
(for-each proc (cdr items)))))
但是运行时,会报错:procedure application: expected procedure, given: #; 论据是:()
我想我知道原因:我递归调用 for-each 函数,每个调用的 for-each 都想返回值
但是当我修改了代码时:
(define (for-each proc items)
(cond ((null? items) #t)
(else (proc (car items)) (for-each proc (cdr items)))))
它运行良好。我不明白,为什么?在cond中,是否每个调用的每个都不需要返回值?
我使用 DrScheme,并选择语言SICP
我不是以英语为母语的人,所以如果有没有描述清楚的东西,请告诉我