24 lines
567 B
Plaintext
24 lines
567 B
Plaintext
;; Ref : http://www.ece.uc.edu/~franco/C511/html/Scheme/ycomb.html
|
|
|
|
(define Y
|
|
(lambda (X)
|
|
((lambda (procedure)
|
|
(X (lambda (arg) ((procedure procedure) arg))))
|
|
(lambda (procedure)
|
|
(X (lambda (arg) ((procedure procedure) arg)))))))
|
|
|
|
; Fib
|
|
(define Fib* (lambda (func-arg)
|
|
(lambda (n) (if (< n 2) n (+ (func-arg (- n 1)) (func-arg (- n 2)))))))
|
|
(define fib (Y Fib*))
|
|
(fib 6)
|
|
→ 8
|
|
|
|
; Fact
|
|
(define F*
|
|
(lambda (func-arg) (lambda (n) (if (zero? n) 1 (* n (func-arg (- n 1)))))))
|
|
(define fact (Y F*))
|
|
|
|
(fact 10)
|
|
→ 3628800
|