(define cadr (l) (car (cdr l))) (define caddr (l) (car (cdr (cdr l)))) (define YY (recur) (lambda (f) (lambda (a) (f ((recur recur) f) a)))) (define Y (YY YY)) (define forX (recur low_high_func) (if (<= (car low_high_func) (cadr low_high_func)) (do ((caddr low_high_func) (car low_high_func)) (recur (list (+ (car low_high_func) 1) (cadr low_high_func) (caddr low_high_func)))) '())) (define for (Y forX)) (define fibohelperX (recur n_a_b) (if (<= (car n_a_b) 0) (cadr n_a_b) (recur (list (- (car n_a_b) 1) (caddr n_a_b) (+ (cadr n_a_b) (caddr n_a_b)))))) (define fibohelper (Y fibohelperX)) (define fibo (n) (fibohelper (list n 0 1))) (for (list 1 25 (lambda (n) (print (fibo n)))))