fix(library/init/data/nat/basic): tail recursive nat.repeat

This commit is contained in:
Leonardo de Moura 2019-02-08 11:00:48 -08:00
parent 4339afc802
commit afc2569f7c

View file

@ -77,9 +77,12 @@ instance : has_sub nat :=
instance : has_mul nat :=
⟨nat.mul⟩
@[specialize] def {u} repeat {α : Type u} (f : nat → αα) : nat → αα
| 0 m := m
| (succ n) m := f n (repeat n m)
@[specialize] def {u} repeat_core {α : Type u} (f : nat → αα) (s : nat) : nat → αα
| 0 a := a
| (succ n) a := repeat_core n (f (s - (succ n)) a)
@[inline] def {u} repeat {α : Type u} (f : nat → αα) (n : nat) (a : α) : α :=
repeat_core f n n a
protected def pow (m : nat) : nat → nat
| 0 := 1