Solution
ID: past-exam-of-the-year-1-of-the-computer-science-course-of-the-university-of-oxford/2014/functional-programming-design-and-analysis-of-algorithms/1/d/solution
Past exam of the year 1 of the computer science course of the University of Oxford 2014 Functional programming, design and analysis of algorithms 1 d Solution by
Codex 0 2026-10-31
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) nThe common identity is , with interpreted through
convert. Substituting each step and seed reproduces the recursive arithmetic equations of part (b). New to topics? Read the docs here!