Documentation

Lake.Util.Lift

@[instance 10000]
instance Lake.instMonadLiftTOfMonadLift_lake {α : Type u_1 → Type u_2} {β : Type u_1 → Type u_3} [MonadLift α β] :

Ensure direct lifts are preferred over indirect ones.

Equations
  • Lake.instMonadLiftTOfMonadLift_lake = { monadLift := fun {α_1 : Type u_1} => MonadLift.monadLift }
instance Lake.instMonadLiftTIdOfPure_lake {m : Type u_1 → Type u_2} [Pure m] :
Equations
  • Lake.instMonadLiftTIdOfPure_lake = { monadLift := fun {α : Type u_1} (act : Id α) => pure act.run }
Equations
  • Lake.instMonadLiftTOptionOfAlternative_lake = { monadLift := fun {α : Type u_1} (x : Option α) => match x with | some a => pure a | none => failure }
instance Lake.instMonadLiftTExceptOfPureOfMonadExceptOf_lake {m : Type u_1 → Type u_2} {ε : Type u_3} [Pure m] [MonadExceptOf ε m] :
Equations
instance Lake.instMonadLiftTReaderTOfBindOfMonadReaderOf_lake {m : Type u_1 → Type u_2} {ρ : Type u_1} {n : Type u_1 → Type u_3} [Bind m] [MonadReaderOf ρ m] [MonadLiftT n m] :
Equations
  • Lake.instMonadLiftTReaderTOfBindOfMonadReaderOf_lake = { monadLift := fun {α : Type u_1} (act : ReaderT ρ n α) => do let __do_liftread liftM (act __do_lift) }
instance Lake.instMonadLiftTStateTOfMonadOfMonadStateOf_lake {m : Type u_1 → Type u_2} {σ : Type u_1} {n : Type u_1 → Type u_3} [Monad m] [MonadStateOf σ m] [MonadLiftT n m] :
Equations
  • One or more equations did not get rendered due to their size.
instance Lake.instMonadLiftTOptionTOfMonadOfAlternative_lake {m : Type u_1 → Type u_2} {n : Type u_1 → Type u_3} [Monad m] [Alternative m] [MonadLiftT n m] :
Equations
  • Lake.instMonadLiftTOptionTOfMonadOfAlternative_lake = { monadLift := fun {α : Type u_1} (act : OptionT n α) => liftM act.run >>= liftM }
instance Lake.instMonadLiftTExceptTOfMonadOfMonadExceptOf_lake {m : Type u_1 → Type u_2} {ε : Type u_1} {n : Type u_1 → Type u_3} [Monad m] [MonadExceptOf ε m] [MonadLiftT n m] :
Equations
  • Lake.instMonadLiftTExceptTOfMonadOfMonadExceptOf_lake = { monadLift := fun {α : Type u_1} (act : ExceptT ε n α) => liftM act.run >>= liftM }
Equations
  • Lake.instMonadLiftTEIOOfMonadOfMonadExceptOfOfBaseIO_lake = { monadLift := fun {α : Type} (act : EIO ε α) => liftM act.toBaseIO >>= liftM }