Computation based on the theory of types a.k.a. Infinite strings, trees and sequences seem like useless things. It takes enormously long time to compute them, or to print or compare them. However, in many situations a particular application examines only a finite subset of a potentially infinite structure. It doesn't mean though that we have to compute the whole infinite structure and then hand it over to the application.
Lazy computation is such a remarkable invention indeed.
Both the integers and the operations on them are represented as terms in the pure untyped lambda-calculus. The only building blocks are identifiers, abstractions and applications. No constants or delta-rules are used. Addition, multiplication, squaring, and exponentiation are easily expressed in lambda-calculus. One approach, based on fixpoints, is more elegant but rather impractical.