The y contaminator, revised

This commit is contained in:
Benson Chu 2024-12-05 20:22:39 -06:00
parent 18a3978d51
commit 4709ad20c0

View file

@ -6,3 +6,48 @@
(let x (+ 1 2) (+ x 1))
(def Y
(lambda (f)
(lambda (x)
((lambda (y)
((f (lambda ()
(y y)))
x))
(lambda (y)
(lambda (x2)
((f (lambda ()
(y y)))
x2)))))))
(def yfib
(lambda (f)
(lambda (x)
(if/else (<= x 1)
x
(+ ((f) (- x 1))
((f) (- x 2)))))))
((Y yfib) 6)
(def fib
((lambda (f)
(lambda (x)
((lambda (y)
((f (lambda ()
(y y)))
x))
(lambda (y)
(lambda (x2)
((f (lambda ()
(y y)))
x2))))))
(lambda (f)
(lambda (x)
(if/else (<= x 1)
x
(+ ((f) (- x 1))
((f) (- x 2))))))))
(fib 6)
;; ((yfib yfib) 3)