Graded Monads #
Type classes for functors, applicatives, monads, and alternatives indexed by a monoidal grade. Composition multiplies grades via the monoid operation.
@[reducible, inline]
A type family indexed by a grade and a type.
Equations
- GradedType G = (G → Type → Type)
Instances For
Graded functor.
Instances
Graded monad.
Instances
class
GradedAlternative
{G : Type}
[Monoid G]
[AddSemigroup G]
[Zero G]
(f : GradedType G)
extends GradedApplicative f :
Type 1
Graded alternative.
- gempty {α : Type} : f 0 α
Instances
@[reducible, inline]
abbrev
gconst
{G : Type}
{f : GradedType G}
[GradedFunctor f]
{i : G}
{α β : Type}
(b : β)
(x : f i α)
:
f i β
Replace the result of a graded computation with a constant value.
Instances For
Equations
- «term_<$>ᵍ_» = Lean.ParserDescr.trailingNode `«term_<$>ᵍ_» 100 101 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " <$>ᵍ ") (Lean.ParserDescr.cat `term 100))
Instances For
Equations
- «term_<$ᵍ_» = Lean.ParserDescr.trailingNode `«term_<$ᵍ_» 100 101 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " <$ᵍ ") (Lean.ParserDescr.cat `term 100))
Instances For
Equations
- «term_<*>ᵍ_» = Lean.ParserDescr.trailingNode `«term_<*>ᵍ_» 60 60 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " <*>ᵍ ") (Lean.ParserDescr.cat `term 61))
Instances For
Equations
- «term_>>=ᵍ_» = Lean.ParserDescr.trailingNode `«term_>>=ᵍ_» 55 55 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " >>=ᵍ ") (Lean.ParserDescr.cat `term 56))
Instances For
Equations
- «term_<|>ᵍ_» = Lean.ParserDescr.trailingNode `«term_<|>ᵍ_» 30 30 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " <|>ᵍ ") (Lean.ParserDescr.cat `term 31))
Instances For
class
LawfulGradedApplicative
{G : Type}
[Monoid G]
(f : GradedType G)
[GradedApplicative f]
extends LawfulGradedFunctor f :
Instances
class
LawfulGradedMonad
{G : Type}
[Monoid G]
(m : GradedType G)
[GradedMonad m]
extends LawfulGradedApplicative m :
Instances
class
LawfulGradedAlternative
{G : Type}
[Monoid G]
[AddMonoid G]
(f : GradedType G)
[GradedAlternative f]
extends LawfulGradedApplicative f :
Instances
class
LawfulGradedMonadPlus
{G : Type}
[Monoid G]
[AddMonoid G]
(m : GradedType G)
[GradedAlternative m]
[GradedMonad m]
extends LawfulGradedAlternative m :