Family Day update

This commit is contained in:
Ingy döt Net 2020-02-17 23:21:07 -08:00
parent aac6731f2c
commit 9ad63ea473
2442 changed files with 39761 additions and 8255 deletions

View file

@ -36,9 +36,7 @@ type fx func(fx) fn
func yc(f ff) fn {
return func(x fx) fn {
return f(func(a1, a2, a3 int) int {
return x(x)(a1, a2, a3)
})
return x(x)
}(func(x fx) fn {
return f(func(a1, a2, a3 int) int {
return x(x)(a1, a2, a3)

View file

@ -0,0 +1,18 @@
class Fib
private function fib_i(integer n)
return iff(n<2?n:this.fib_i(n-1)+this.fib_i(n-2))
end function
public function fib(integer n)
if n<0 then throw("constraint error") end if
return this.fib_i(n)
end function
end class
Fib f = new()
function fib_i(integer i)
return sprintf("this is not the fib_i(%d) you are looking for\n",i)
end function
?f.fib(10)
--?f.fib_i(10) -- illegal
?fib_i(10)

View file

@ -0,0 +1,10 @@
function erm(integer n, f)
return f(n,f)
end function
function fib(integer n)
if n<0 then throw("constraint error") end if
return erm(n,function(integer n,f) return iff(n<2?n:f(n-1,f)+f(n-2,f)) end function)
end function
?fib(10)

View file

@ -0,0 +1,4 @@
>>> Y = lambda f: lambda n: f(f,n)
>>> fib = lambda f, n: None if n < 0 else (0 if n == 0 else (1 if n == 1 else f(f,n-1) + f(f,n-2))) #same as the first three implementations
>>> [ Y(fib)(i) for i in range(-2, 10) ]
[None, None, 0, 1, 1, 2, 3, 5, 8, 13, 21, 34]

View file

@ -0,0 +1,3 @@
>>> fib_func = (lambda f: lambda n: f(f,n))(lambda f, n: None if n < 0 else (0 if n == 0 else (1 if n == 1 else f(f,n-1) + f(f,n-2))))
>>> [ fib_func(i) for i in range(-2, 10) ]
[None, None, 0, 1, 1, 2, 3, 5, 8, 13, 21, 34]