#lang racket ;; We use Z combinator (applicative order fixed-point operator) (define Z (λ (f) ((λ (x) (f (λ (g) ((x x) g)))) (λ (x) (f (λ (g) ((x x) g))))))) (define fibonacci (Z (λ (fibo) (λ (n) (if (<= n 2) 1 (+ (fibo (- n 1)) (fibo (- n 2))))))))