Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
9
Task/Church-numerals/Zkl/church-numerals-1.zkl
Normal file
9
Task/Church-numerals/Zkl/church-numerals-1.zkl
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
class Church{ // kinda heavy, just an int + fcn churchAdd(ca,cb) would also work
|
||||
fcn init(N){ var n=N; } // Church Zero is Church(0)
|
||||
fcn toInt(f,x){ do(n){ x=f(x) } x } // c(3)(f,x) --> f(f(f(x)))
|
||||
fcn succ{ self(n+1) }
|
||||
fcn __opAdd(c){ self(n+c.n) }
|
||||
fcn __opMul(c){ self(n*c.n) }
|
||||
fcn pow(c) { self(n.pow(c.n)) }
|
||||
fcn toString{ String("Church(",n,")") }
|
||||
}
|
||||
9
Task/Church-numerals/Zkl/church-numerals-2.zkl
Normal file
9
Task/Church-numerals/Zkl/church-numerals-2.zkl
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
c3,c4 := Church(3),c3.succ();
|
||||
f,x := Op("+",1),0;
|
||||
println("f=",f,", x=",x);
|
||||
println("%s+%s=%d".fmt(c3,c4, (c3+c4).toInt(f,x) ));
|
||||
println("%s*%s=%d".fmt(c3,c4, (c3*c4).toInt(f,x) ));
|
||||
println("%s^%s=%d".fmt(c4,c3, (c4.pow(c3)).toInt(f,x) ));
|
||||
println("%s^%s=%d".fmt(c3,c4, (c3.pow(c4)).toInt(f,x) ));
|
||||
println();
|
||||
T(c3+c4,c3*c4,c4.pow(c3),c3.pow(c4)).apply("toInt",f,x).println();
|
||||
8
Task/Church-numerals/Zkl/church-numerals-3.zkl
Normal file
8
Task/Church-numerals/Zkl/church-numerals-3.zkl
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
fcn churchZero{ return(fcn(x){ x }) } // or fcn churchZero{ self.fcn.idFcn }
|
||||
fcn churchSucc(c){ return('wrap(f){ return('wrap(x){ f(c(f)(x)) }) }) }
|
||||
fcn churchAdd(c1,c2){ return('wrap(f){ return('wrap(x){ c1(f)(c2(f)(x)) }) }) }
|
||||
fcn churchMul(c1,c2){ return('wrap(f){ c1(c2(f)) }) }
|
||||
fcn churchPow(c1,c2){ return('wrap(f){ c2(c1)(f) }) }
|
||||
fcn churchToInt(c,f,x){ c(f)(x) }
|
||||
fcn churchFromInt(n){ c:=churchZero; do(n){ c=churchSucc(c) } c }
|
||||
//fcn churchFromInt(n){ (0).reduce(n,churchSucc,churchZero) } // what ever
|
||||
4
Task/Church-numerals/Zkl/church-numerals-4.zkl
Normal file
4
Task/Church-numerals/Zkl/church-numerals-4.zkl
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
c3,c4 := churchFromInt(3),churchSucc(c3);
|
||||
f,x := Op("+",1),0; // x>=0, ie natural number
|
||||
T(c3,c4,churchAdd(c3,c4),churchMul(c3,c4),churchPow(c4,c3),churchPow(c3,c4))
|
||||
.apply(churchToInt,f,x).println();
|
||||
Loading…
Add table
Add a link
Reference in a new issue