= Solution
A <natural-number fold> iterates its first argument once per successor. For <addition>, iterate `Succ` starting at the other operand; for <multiplication>, iterate <addition> starting at zero; for <exponentiation>, iterate <multiplication> starting at one:
``
addF :: Natural -> Natural -> Natural
addF m n = foldNat Succ n m
mulF :: Natural -> Natural -> Natural
mulF m n = foldNat (addF n) Zero m
powerF :: Natural -> Natural -> Natural
powerF m n = foldNat (mulF m) (Succ Zero) n
``
The common identity is $\boxed{\operatorname{foldNat}\ f\ e\ n=f^n(e)}$, with $n$ interpreted through `convert`. Substituting each step and seed reproduces the recursive arithmetic equations of part (b).
Back to article page