Recall that functions i, d, z, H and K are primordial.
((λY((λS((λr((λp((λa((λm((λP
42 ; application code goes here
)(λx(λy(yx)))) ; P, power
)(λx(λy(λz(x(yz)))))) ; m, multiply
)(λx(λy((xS)y)))) ; a, add
)(λn((ni)0))) ; p (write; Church integers to native)
)(Y(λr(λn((((zn)(λdH))(λD(S(r(dn)))))i))))) ; r (read; native integers to Church)
)(λn(λf(λx(f((nf)x)))))) ; S (Church number successor)
)(λf((λx(f(λy((xx)y))))(λx(f(λy((xx)y))))))) ; Y combinator
The above expression yields 42. The following expressions, when substituted for 42 above, yield the indicated results.
(p((a(r6))(r3))) ; -> 6+3 = 9
(p((m(r6))(r3))) ; -> 6*3 = 18
(p((P(r6))(r3))) ; -> 63 = 216
(p((P(r0))(r0))) ; -> 00 = 1? Hmm

All of this development of arithmetic is within the bald language; the native arithmetic is relegated solely to input/output. It is notable that each of the three functions add, multiply and power stand alone as short expressions with no infrastructure beyond S, the successor function. Recursion is normally used in defining arithmetic but here it is only for the definition of r which converts to Church numbers.

To get this far starting with set theory takes many pages of ideas solely in support of arithmetic. Further I know no how-to (computational) version of arithmetic based on set theory, but I suspect that such is possible.

The above pattern makes the lower functions available to the higher ones:

With the help of Y, r uses r. This is not the most general accessibility pattern.