dhall-1.3.0: Prelude/Natural/fold
{-
`fold` is the primitive function for consuming `Natural` numbers
If you treat the number `+3` as `succ (succ (succ zero))` then a `fold` just
replaces each `succ` and `zero` with something else
Examples:
```
./fold +3 Natural (λ(x : Natural) → +5 * x) +1 = +125
λ(zero : Natural) → ./fold +3 Natural (λ(x : Natural) → +5 * x) zero
= λ(zero : Natural) → +5 * +5 * +5 * zero
λ(natural : Type)
→ λ(succ : natural → natural)
→ λ(zero : natural)
→ ./fold +3 natural succ zero
= λ(natural : Type)
→ λ(succ : natural → natural)
→ λ(zero : natural)
→ succ (succ (succ zero))
```
-}
let fold
: Natural
→ ∀(natural : Type)
→ ∀(succ : natural → natural)
→ ∀(zero : natural)
→ natural
= Natural/fold
in fold