(define YY (recur) (lambda (f) (lambda (a) (f ((recur recur) f) a)))) (define Y (YY YY)) (define forX (recur (low high func)) (if (low <= high) (do (func low) (recur (list (+ low 1) high func))) '())) (define for (Y forX)) (define fibohelperX (recur (n a b)) (if (n <= 0) a (recur (list (- n 1) b (+ a b))))) (define fibohelper (Y fibohelperX)) (define fibo (n) (fibohelper (n 0 1))) ; Fill in the dots with the lines below... ; If you're done, try to dump the whole expression into test.hs. ; ((lambda (YY) ...) (lambda (recur) (lambda (f) (lambda (a) (f ((recur recur) f) a))))) ; ; ((lambda (Y) ...) (YY YY)) ; ; ((lambda (forX) ...) (lambda (recur args) ; args: (low high func) ; (if ((car args) <= (cadr args)) ; (do ; ((cadr (cdr args)) (car args)) ; (recur (list (+ low 1) high func))) ; '())))