;; ;; Y combinator ;; (define Y (lambda (M) ((lambda (future) (M (lambda (arg) ((future future) arg)))) (lambda (future) (M (lambda (arg) ((future future) arg))))))) ;; ;; Y combinator TEST ;; ;; usage: (last-elem '(1 2 3)) -> 3 ;; !! This function is VERY SLOW !! ;; (define last-elem (Y (lambda (recur) (lambda (l) (if (null (cdr l)) (car l) (recur (cdr l)))))))