@[specialize #[]]
def
Nat.forRevM.loop
{m : Type → Type u_1}
[Monad m]
(n : Nat)
(f : (i : Nat) → i < n → m Unit)
(i : Nat)
:
Equations
- Nat.forRevM.loop n f 0 x_2 = pure ()
- Nat.forRevM.loop n f i.succ h = do f i ⋯ Nat.forRevM.loop n f i ⋯
Instances For
@[specialize #[]]
def
Nat.foldM.loop
{α : Type u}
{m : Type u → Type v}
[Monad m]
(n : Nat)
(f : (i : Nat) → i < n → α → m α)
(i : Nat)
:
i ≤ n → α → m α
Equations
- Nat.foldM.loop n f 0 h x = pure x
- Nat.foldM.loop n f i.succ h x = f (n - i - 1) ⋯ x >>= Nat.foldM.loop n f i ⋯
Instances For
@[specialize #[]]
def
Nat.foldRevM.loop
{α : Type u}
{m : Type u → Type v}
[Monad m]
(n : Nat)
(f : (i : Nat) → i < n → α → m α)
(i : Nat)
:
i ≤ n → α → m α
Equations
- Nat.foldRevM.loop n f 0 h x = pure x
- Nat.foldRevM.loop n f i.succ h x = f i ⋯ x >>= Nat.foldRevM.loop n f i ⋯
Instances For
@[specialize #[]]
def
Nat.allM.loop
{m : Type → Type u_1}
[Monad m]
(n : Nat)
(p : (i : Nat) → i < n → m Bool)
(i : Nat)
:
Equations
- Nat.allM.loop n p 0 x_2 = pure true
- Nat.allM.loop n p i.succ h = do let __do_lift ← p (n - i - 1) ⋯ match __do_lift with | true => Nat.allM.loop n p i ⋯ | false => pure false
Instances For
@[specialize #[]]
def
Nat.anyM.loop
{m : Type → Type u_1}
[Monad m]
(n : Nat)
(p : (i : Nat) → i < n → m Bool)
(i : Nat)
:
Equations
- Nat.anyM.loop n p 0 x_2 = pure false
- Nat.anyM.loop n p i.succ h = do let __do_lift ← p (n - i - 1) ⋯ match __do_lift with | true => pure true | false => Nat.anyM.loop n p i ⋯