Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
15
Task/Church-numerals/R/church-numerals-1.r
Normal file
15
Task/Church-numerals/R/church-numerals-1.r
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
zero <- function(f) {function(x) x}
|
||||
succ <- function(n) {function(f) {function(x) f(n(f)(x))}}
|
||||
add <- function(n) {function(m) {function(f) {function(x) m(f)(n(f)(x))}}}
|
||||
mult <- function(n) {function(m) {function(f) m(n(f))}}
|
||||
expt <- function(n) {function(m) m(n)}
|
||||
natToChurch <- function(n) {if(n == 0) zero else succ(natToChurch(n - 1))}
|
||||
churchToNat <- function(n) {(n(function(x) x + 1))(0)}
|
||||
|
||||
three <- natToChurch(3)
|
||||
four <- natToChurch(4)
|
||||
|
||||
churchToNat(add(three)(four))
|
||||
churchToNat(mult(three)(four))
|
||||
churchToNat(expt(three)(four))
|
||||
churchToNat(expt(four)(three))
|
||||
8
Task/Church-numerals/R/church-numerals-2.r
Normal file
8
Task/Church-numerals/R/church-numerals-2.r
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
zeroAlt <- function(x) identity
|
||||
one <- function(f) f #Not actually requested by the task and only used to define Alt functions, so placed here.
|
||||
oneAlt <- identity
|
||||
succAlt <- function(n) {function(f) {function(x) n(f)(f(x))}}
|
||||
succAltAlt <- add(one)
|
||||
addAlt <- function(n) n(succ)
|
||||
multAlt <- function(n) {function(m) m(add(n))(zero)}
|
||||
exptAlt <- function(n) {function(m) m(mult(n))(one)}
|
||||
7
Task/Church-numerals/R/church-numerals-3.r
Normal file
7
Task/Church-numerals/R/church-numerals-3.r
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
churchToNat(addAlt(three)(four))
|
||||
churchToNat(multAlt(three)(four))
|
||||
churchToNat(exptAlt(three)(four))
|
||||
churchToNat(exptAlt(four)(three))
|
||||
churchToNat(succ(four))
|
||||
churchToNat(succAlt(four))
|
||||
churchToNat(succAltAlt(four))
|
||||
33
Task/Church-numerals/R/church-numerals-4.r
Normal file
33
Task/Church-numerals/R/church-numerals-4.r
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
const <- function(f) {function(d) f}
|
||||
zero <- const(identity)
|
||||
one <- identity
|
||||
succ <- function(n) {function(f) {function(x) f(n(f)(x))}}
|
||||
add <- function(n) {function(m) {function(f) {function(x) m(f)(n(f)(x))}}}
|
||||
mult <- function(n) {function(m) {function(f) m(n(f))}}
|
||||
expt <- function(n) {function(m) m(n)}
|
||||
iszero <- function(n) n(const(zero))(one)
|
||||
pred <- function(n) {function(f) {function(x)
|
||||
n(function(g) {function(h) h(g(f))})(const(x))(identity)}}
|
||||
subt <- function(m) {function(n) n(pred)(m)}
|
||||
divr <- function(n) {function(d)
|
||||
(function(v) v(const(succ(divr(v)(d))))(zero))(subt(n)(d))}
|
||||
div <- function(dvdnd) {function(dvsr) divr(succ(dvdnd))(dvsr)}
|
||||
natToChurch <- function(n) {if(n == 0) zero else succ(natToChurch(n - 1))}
|
||||
churchToNat <- function(n) {(n(function(x) x + 1))(0)}
|
||||
|
||||
three <- natToChurch(3)
|
||||
four <- succ(three)
|
||||
eleven <- natToChurch(11)
|
||||
twelve <- succ(eleven)
|
||||
|
||||
churchToNat(add(three)(four))
|
||||
churchToNat(mult(three)(four))
|
||||
churchToNat(expt(three)(four))
|
||||
churchToNat(expt(four)(three))
|
||||
churchToNat(iszero(zero))
|
||||
churchToNat(iszero(three))
|
||||
churchToNat(pred(four))
|
||||
churchToNat(pred(zero))
|
||||
churchToNat(subt(eleven)(three))
|
||||
churchToNat(div(eleven)(three))
|
||||
churchToNat(div(twelve)(three))
|
||||
Loading…
Add table
Add a link
Reference in a new issue