Documentation

Lean.Util.MonadCache

class Lean.MonadCache (α β : Type) (m : TypeType) :

Interface for caching results.

  • findCached? : αm (Option β)
  • cache : αβm Unit
Instances
    @[inline]
    def Lean.checkCache {α β : Type} {m : TypeType} [MonadCache α β m] [Monad m] (a : α) (f : Unitm β) :
    m β

    If entry a := b is already in the cache, then return b. Otherwise, execute b ← f (), store a := b in the cache and return b.

    Equations
      Instances For
        instance Lean.instMonadCacheReaderT {α β ρ : Type} {m : TypeType} [MonadCache α β m] :
        MonadCache α β (ReaderT ρ m)
        Equations
          @[always_inline]
          instance Lean.instMonadCacheExceptTOfMonad {α β ε : Type} {m : TypeType} [MonadCache α β m] [Monad m] :
          MonadCache α β (ExceptT ε m)
          Equations
            class Lean.MonadHashMapCacheAdapter (α β : Type) (m : TypeType) [BEq α] [Hashable α] :

            Adapter for implementing MonadCache interface using HashMaps. We just have to specify how to extract/modify the HashMap.

            Instances
              @[inline]
              def Lean.MonadHashMapCacheAdapter.findCached? {α β : Type} {m : TypeType} [BEq α] [Hashable α] [Monad m] [MonadHashMapCacheAdapter α β m] (a : α) :
              m (Option β)
              Equations
                Instances For
                  @[inline]
                  def Lean.MonadHashMapCacheAdapter.cache {α β : Type} {m : TypeType} [BEq α] [Hashable α] [MonadHashMapCacheAdapter α β m] (a : α) (b : β) :
                  Equations
                    Instances For
                      def Lean.MonadCacheT {ω : Type} (α β : Type) (m : TypeType) [STWorld ω m] [BEq α] [Hashable α] :
                      Equations
                        Instances For
                          instance Lean.MonadCacheT.instMonadHashMapCacheAdapter {ω α β : Type} {m : TypeType} [STWorld ω m] [BEq α] [Hashable α] [MonadLiftT (ST ω) m] :
                          Equations
                            @[inline]
                            def Lean.MonadCacheT.run {ω α β : Type} {m : TypeType} [STWorld ω m] [BEq α] [Hashable α] [MonadLiftT (ST ω) m] [Monad m] {σ : Type} (x : MonadCacheT α β m σ) :
                            m σ
                            Equations
                              Instances For
                                instance Lean.MonadCacheT.instMonad {ω α β : Type} {m : TypeType} [STWorld ω m] [BEq α] [Hashable α] [Monad m] :
                                Monad (MonadCacheT α β m)
                                Equations
                                  instance Lean.MonadCacheT.instMonadLift {ω α β : Type} {m : TypeType} [STWorld ω m] [BEq α] [Hashable α] :
                                  Equations
                                    instance Lean.MonadCacheT.instMonadExceptOf {ω α β : Type} {m : TypeType} [STWorld ω m] [BEq α] [Hashable α] (ε : Type u_1) [MonadExceptOf ε m] :
                                    Equations
                                      instance Lean.MonadCacheT.instMonadControl {ω α β : Type} {m : TypeType} [STWorld ω m] [BEq α] [Hashable α] :
                                      Equations
                                        instance Lean.MonadCacheT.instMonadFinally {ω α β : Type} {m : TypeType} [STWorld ω m] [BEq α] [Hashable α] [MonadFinally m] :
                                        Equations
                                          instance Lean.MonadCacheT.instMonadRef {ω α β : Type} {m : TypeType} [STWorld ω m] [BEq α] [Hashable α] [MonadRef m] :
                                          Equations
                                            instance Lean.MonadCacheT.instAlternative {ω α β : Type} {m : TypeType} [STWorld ω m] [BEq α] [Hashable α] [Monad m] [Alternative m] :
                                            Equations
                                              def Lean.MonadStateCacheT (α β : Type) (m : TypeType) [BEq α] [Hashable α] :
                                              Equations
                                                Instances For
                                                  @[inline]
                                                  def Lean.MonadStateCacheT.run {α β : Type} {m : TypeType} [BEq α] [Hashable α] [Monad m] {σ : Type} (x : MonadStateCacheT α β m σ) :
                                                  m σ
                                                  Equations
                                                    Instances For
                                                      instance Lean.MonadStateCacheT.instMonad {α β : Type} {m : TypeType} [BEq α] [Hashable α] [Monad m] :
                                                      Equations
                                                        instance Lean.MonadStateCacheT.instMonadLift {α β : Type} {m : TypeType} [BEq α] [Hashable α] [Monad m] :
                                                        Equations
                                                          instance Lean.MonadStateCacheT.instMonadExceptOf {α β : Type} {m : TypeType} [BEq α] [Hashable α] [Monad m] (ε : Type u_1) [MonadExceptOf ε m] :
                                                          Equations
                                                            instance Lean.MonadStateCacheT.instMonadControl {α β : Type} {m : TypeType} [BEq α] [Hashable α] [Monad m] :
                                                            Equations
                                                              Equations
                                                                instance Lean.MonadStateCacheT.instMonadRef {α β : Type} {m : TypeType} [BEq α] [Hashable α] [Monad m] [MonadRef m] :
                                                                Equations