packages feed

dhall-1.24.0: dhall-lang/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