=>
defexprs
-
fact
(let (Y (lambda (f) (lambda (n) (let (w (lambda (x) (lambda (n) (@ f (@ x x) n)))) (@ f (@ w w) n)))))
(let (fact (@ Y (lambda (f n) (if (< n 2) 1 (* n (@ f (- n 1)))))))
(@ fact 10)))
-
fib
(let (Y (lambda (f) (lambda (n) (let (w (lambda (x) (lambda (n) (@ f (@ x x) n)))) (@ f (@ w w) n)))))
(let (fib (@ Y (lambda (f n) (if (< n 3) 1 (+ (@ f (- n 1)) (@ f (- n 2)))))))
(@ fib 10)))
-
nested let
(@ (let (x 10)
(let (y 1)
(lambda (z) (+ x (+ y z)))))
100)
-
different argument counts
(+
(+ (@ (lambda () (+ 1 1)))
(@ (lambda (x) (+ x x)) 1))
(+ (@ (lambda (x y) (* x y)) 5 5)
(@ (lambda (_) (* _ 100)) 3)))
source