(define (f l)
(if (null? l)
#f
(let ((r (fold-left kernel k0 l)))
(f (if (car r) (cadr r) (caddr r))))))
(define (kernel l e)
(list (not (car l))
(if (car l) (cons e (cadr l)) (cadr l))
(cons e (cons e (cons e (caddr l))))))
(define k0 (list #f '() '(#t #t #t)))
Q1 (easy): Show that for any non-negative integer n, (f (make-list n)) can return no value other than #f.Q2 (very hard): Show that for any non-negative integer
n, (f (make-list n)) returns #f.
By "very hard" you mean "famous open problem". :)
ReplyDelete