(define every-aux
(lambda(status predicate lst)
(cond((null? lst) status)
((cond((equal? (predicate (car lst)) #t)
(set! status #t)
(every-aux status predicate (cdr lst)))
(else (set! status #f) status))))))
Выше Процедура возвращает void, если предикат не совпадает с каждым элементом в lst?
Нет проблем с возвратом #t, хотя, если предикат соответствует каждому элементу lst.
Изменение последней строки на
(else (set! status #f) status))))))
на
(else (set! status "#f") status))))))
возвращает "#f", поэтому процедура верна.
Как заставить схему вернуть #f явно вместо void?