Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
47
Task/Y-combinator/Scheme/y-combinator-1.ss
Normal file
47
Task/Y-combinator/Scheme/y-combinator-1.ss
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
(define Y ; (Y f) = (g g) where
|
||||
(lambda (f) ; (g g) = (f (lambda a (apply (g g) a)))
|
||||
((lambda (g) (g g)) ; (Y f) == (f (lambda a (apply (Y f) a)))
|
||||
(lambda (g)
|
||||
(f (lambda a (apply (g g) a)))))))
|
||||
|
||||
;; head-recursive factorial
|
||||
(define fac ; fac = (Y f) = (f (lambda a (apply (Y f) a)))
|
||||
(Y (lambda (r) ; = (lambda (x) ... (r (- x 1)) ... )
|
||||
(lambda (x) ; where r = (lambda a (apply (Y f) a))
|
||||
(if (< x 2) ; (r ... ) == ((Y f) ... )
|
||||
1 ; == (lambda (x) ... (fac (- x 1)) ... )
|
||||
(* x (r (- x 1))))))))
|
||||
|
||||
;; tail-recursive factorial
|
||||
(define fac2
|
||||
(lambda (x)
|
||||
((Y (lambda (r) ; (Y f) == (f (lambda a (apply (Y f) a)))
|
||||
(lambda (x acc) ; r == (lambda a (apply (Y f) a))
|
||||
(if (< x 2) ; (r ... ) == ((Y f) ... )
|
||||
acc
|
||||
(r (- x 1) (* x acc))))))
|
||||
x 1)))
|
||||
|
||||
; double-recursive Fibonacci
|
||||
(define fib
|
||||
(Y (lambda (f)
|
||||
(lambda (x)
|
||||
(if (< x 2)
|
||||
x
|
||||
(+ (f (- x 1)) (f (- x 2))))))))
|
||||
|
||||
; tail-recursive Fibonacci
|
||||
(define fib2
|
||||
(lambda (x)
|
||||
((Y (lambda (f)
|
||||
(lambda (x a b)
|
||||
(if (< x 1)
|
||||
a
|
||||
(f (- x 1) b (+ a b))))))
|
||||
x 0 1)))
|
||||
|
||||
(display (fac 6))
|
||||
(newline)
|
||||
|
||||
(display (fib2 134))
|
||||
(newline)
|
||||
3
Task/Y-combinator/Scheme/y-combinator-2.ss
Normal file
3
Task/Y-combinator/Scheme/y-combinator-2.ss
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
(define Yr ; (Y f) == (f (lambda a (apply (Y f) a)))
|
||||
(lambda (f)
|
||||
(f (lambda a (apply (Yr f) a)))))
|
||||
3
Task/Y-combinator/Scheme/y-combinator-3.ss
Normal file
3
Task/Y-combinator/Scheme/y-combinator-3.ss
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
(define Y2r
|
||||
(lambda (f)
|
||||
(lambda a (apply (f (Y2r f)) a))))
|
||||
5
Task/Y-combinator/Scheme/y-combinator-4.ss
Normal file
5
Task/Y-combinator/Scheme/y-combinator-4.ss
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
(define Y2 ; (Y2 f) = (g g) where
|
||||
(lambda (f) ; (g g) = (lambda a (apply (f (g g)) a))
|
||||
((lambda (g) (g g)) ; (Y2 f) == (lambda a (apply (f (Y2 f)) a))
|
||||
(lambda (g)
|
||||
(lambda a (apply (f (g g)) a))))))
|
||||
Loading…
Add table
Add a link
Reference in a new issue