User blog comment:Upquark11111/An Explanation of Loader's Number/@comment-11227630-20171210002438/@comment-26454151-20171210063551

Simply typed lambda calculus is extremely weak due to it's lack of, well, everything. Take, for example, the function $$\mathrm{Iter}$$. In order for it to be possible to construct, we need to have parametric polymorphism at our disposal. That is, we need to be able to have functions mapping from types to values $$(\square, \ast)$$. You could try to get around this by only defining $$\mathrm{Iter}:\mathrm{nat} \rightarrow ((\mathrm{nat} \rightarrow \mathrm{nat}) \rightarrow (\mathrm{nat} \rightarrow \mathrm{nat}))$$. However, now we come to the problem of the definition of $$\mathrm{nat}$$ itself. In λPω, this is defined as $$\mathrm{nat} = \Pi A:\ast. (A\rightarrow A)\rightarrow (A\rightarrow A)$$, but this maps from a type to a value. Again, we could try to circumvent this by redefining it to be $$\mathrm{nat} = (0\rightarrow 0)\rightarrow (0\rightarrow 0)$$, given some base type $$0:\ast$$ in the context. By doing this, we lose the ability to use the Church encoding to iterate functions, as we are no longer able to change $$0$$ freely to $$\mathrm{nat}$$.

Bottom line is, λ→ has absolutely ZERO function iteration whatsoever. It's a wonder that it's even able to reach exponentiation.