Agda-2.5.2: A dependently typed functional programming language and proof assistant

Safe Haskell | None
Language | Haskell2010

Agda.TypeChecking.Monad.State

Contents

- Lens for persistent states and its fields
- Scope
- Signature
  - Lens for `stSignature` and `stImports`
  - Modifiers for rewrite rules
  - Modifiers for parts of the signature
- Top level module
- Haskell imports
- Interaction output callback
- Pattern synonyms
- Benchmark
- Instance definitions

Description

Lenses for `TCState` and more.

Synopsis

- resetState :: TCM ()
- resetAllState :: TCM ()
- localTCState :: TCM a -> TCM a
- localTCStateSaving :: TCM a -> TCM (a, TCState)
- lensPersistentState :: Lens' PersistentTCState TCState
- updatePersistentState :: (PersistentTCState -> PersistentTCState) -> TCState -> TCState
- modifyPersistentState :: (PersistentTCState -> PersistentTCState) -> TCM ()
- lensAccumStatisticsP :: Lens' Statistics PersistentTCState
- lensAccumStatistics :: Lens' Statistics TCState
- getScope :: TCM ScopeInfo
- setScope :: ScopeInfo -> TCM ()
- modifyScope_ :: (ScopeInfo -> ScopeInfo) -> TCM ()
- modifyScope :: (ScopeInfo -> ScopeInfo) -> TCM ()
- withScope :: ScopeInfo -> TCM a -> TCM (a, ScopeInfo)
- withScope_ :: ScopeInfo -> TCM a -> TCM a
- localScope :: TCM a -> TCM a
- notInScope :: QName -> TCM a
- printScope :: String -> Int -> String -> TCM ()
- modifySignature :: (Signature -> Signature) -> TCM ()
- modifyImportedSignature :: (Signature -> Signature) -> TCM ()
- getSignature :: TCM Signature
- modifyGlobalDefinition :: QName -> (Definition -> Definition) -> TCM ()
- setSignature :: Signature -> TCM ()
- withSignature :: Signature -> TCM a -> TCM a
- addRewriteRulesFor :: QName -> RewriteRules -> [QName] -> Signature -> Signature
- lookupDefinition :: QName -> Signature -> Maybe Definition
- updateDefinitions :: (Definitions -> Definitions) -> Signature -> Signature
- updateDefinition :: QName -> (Definition -> Definition) -> Signature -> Signature
- updateTheDef :: (Defn -> Defn) -> Definition -> Definition
- updateDefType :: (Type -> Type) -> Definition -> Definition
- updateDefArgOccurrences :: ([Occurrence] -> [Occurrence]) -> Definition -> Definition
- updateDefPolarity :: ([Polarity] -> [Polarity]) -> Definition -> Definition
- updateDefCompiledRep :: (CompiledRepresentation -> CompiledRepresentation) -> Definition -> Definition
- updateFunClauses :: ([Clause] -> [Clause]) -> Defn -> Defn
- updateCompiledClauses :: (Maybe CompiledClauses -> Maybe CompiledClauses) -> Defn -> Defn
- setTopLevelModule :: QName -> TCM ()
- withTopLevelModule :: QName -> TCM a -> TCM a
- addHaskellImport :: String -> TCM ()
- getHaskellImports :: TCM (Set String)
- addHaskellImportUHC :: String -> TCM ()
- getHaskellImportsUHC :: TCM (Set String)
- addInlineHaskell :: String -> TCM ()
- getInteractionOutputCallback :: TCM InteractionOutputCallback
- appInteractionOutputCallback :: Response -> TCM ()
- setInteractionOutputCallback :: InteractionOutputCallback -> TCM ()
- getPatternSyns :: TCM PatternSynDefns
- setPatternSyns :: PatternSynDefns -> TCM ()
- modifyPatternSyns :: (PatternSynDefns -> PatternSynDefns) -> TCM ()
- getPatternSynImports :: TCM PatternSynDefns
- lookupPatternSyn :: QName -> TCM PatternSynDefn
- theBenchmark :: TCState -> Benchmark
- updateBenchmark :: (Benchmark -> Benchmark) -> TCState -> TCState
- getBenchmark :: TCM Benchmark
- modifyBenchmark :: (Benchmark -> Benchmark) -> TCM ()
- freshTCM :: TCM a -> TCM (Either TCErr a)
- addImportedInstances :: Signature -> TCM ()
- updateInstanceDefs :: (TempInstanceTable -> TempInstanceTable) -> TCState -> TCState
- modifyInstanceDefs :: (TempInstanceTable -> TempInstanceTable) -> TCM ()
- getAllInstanceDefs :: TCM TempInstanceTable
- getAnonInstanceDefs :: TCM (Set QName)
- clearAnonInstanceDefs :: TCM ()
- addUnknownInstance :: QName -> TCM ()
- addNamedInstance :: QName -> QName -> TCM ()

# Documentation

resetState :: TCM () #

Resets the non-persistent part of the type checking state.

resetAllState :: TCM () #

Resets all of the type checking state.

Keep only `Benchmark` information.

localTCState :: TCM a -> TCM a #

Restore `TCState` after performing subcomputation.

In contrast to `localState`, the `Benchmark` info from the subcomputation is saved.

localTCStateSaving :: TCM a -> TCM (a, TCState) #

Same as `localTCState` but also returns the state in which we were just before reverting it.

# Lens for persistent states and its fields

lensPersistentState :: Lens' PersistentTCState TCState #

updatePersistentState :: (PersistentTCState -> PersistentTCState) -> TCState -> TCState #

modifyPersistentState :: (PersistentTCState -> PersistentTCState) -> TCM () #

lensAccumStatisticsP :: Lens' Statistics PersistentTCState #

Lens for `stAccumStatistics`.

lensAccumStatistics :: Lens' Statistics TCState #

# Scope

getScope :: TCM ScopeInfo #

Get the current scope.

setScope :: ScopeInfo -> TCM () #

Set the current scope.

modifyScope_ :: (ScopeInfo -> ScopeInfo) -> TCM () #

Modify the current scope without updating the inverse maps.

modifyScope :: (ScopeInfo -> ScopeInfo) -> TCM () #

Modify the current scope.

withScope :: ScopeInfo -> TCM a -> TCM (a, ScopeInfo) #

Run a computation in a local scope.

withScope_ :: ScopeInfo -> TCM a -> TCM a #

Same as `withScope`, but discard the scope from the computation.

localScope :: TCM a -> TCM a #

Discard any changes to the scope by a computation.

notInScope :: QName -> TCM a #

Scope error.

printScope :: String -> Int -> String -> TCM () #

Debug print the scope.

# Signature

## Lens for `stSignature` and `stImports`

modifySignature :: (Signature -> Signature) -> TCM () #

modifyImportedSignature :: (Signature -> Signature) -> TCM () #

getSignature :: TCM Signature #

modifyGlobalDefinition :: QName -> (Definition -> Definition) -> TCM () #

Update a possibly imported definition. Warning: changes made to imported definitions (during type checking) will not persist outside the current module. This function is currently used to update the compiled representation of a function during compilation.

setSignature :: Signature -> TCM () #

withSignature :: Signature -> TCM a -> TCM a #

Run some computation in a different signature, restore original signature.

## Modifiers for rewrite rules

addRewriteRulesFor :: QName -> RewriteRules -> [QName] -> Signature -> Signature #

## Modifiers for parts of the signature

lookupDefinition :: QName -> Signature -> Maybe Definition #

updateDefinitions :: (Definitions -> Definitions) -> Signature -> Signature #

updateDefinition :: QName -> (Definition -> Definition) -> Signature -> Signature #

updateTheDef :: (Defn -> Defn) -> Definition -> Definition #

updateDefType :: (Type -> Type) -> Definition -> Definition #

updateDefArgOccurrences :: ([Occurrence] -> [Occurrence]) -> Definition -> Definition #

updateDefPolarity :: ([Polarity] -> [Polarity]) -> Definition -> Definition #

updateDefCompiledRep :: (CompiledRepresentation -> CompiledRepresentation) -> Definition -> Definition #

updateFunClauses :: ([Clause] -> [Clause]) -> Defn -> Defn #

updateCompiledClauses :: (Maybe CompiledClauses -> Maybe CompiledClauses) -> Defn -> Defn #

# Top level module

setTopLevelModule :: QName -> TCM () #

Set the top-level module. This affects the global module id of freshly generated names.

withTopLevelModule :: QName -> TCM a -> TCM a #

Use a different top-level module for a computation. Used when generating names for imported modules.

# Haskell imports

addHaskellImport :: String -> TCM () #

Tell the compiler to import the given Haskell module.

getHaskellImports :: TCM (Set String) #

Get the Haskell imports.

addHaskellImportUHC :: String -> TCM () #

Tell the compiler to import the given Haskell module.

getHaskellImportsUHC :: TCM (Set String) #

Get the Haskell imports.

addInlineHaskell :: String -> TCM () #

# Interaction output callback

getInteractionOutputCallback :: TCM InteractionOutputCallback #

appInteractionOutputCallback :: Response -> TCM () #

setInteractionOutputCallback :: InteractionOutputCallback -> TCM () #

# Pattern synonyms

getPatternSyns :: TCM PatternSynDefns #

setPatternSyns :: PatternSynDefns -> TCM () #

modifyPatternSyns :: (PatternSynDefns -> PatternSynDefns) -> TCM () #

Lens for `stPatternSyns`.

getPatternSynImports :: TCM PatternSynDefns #

lookupPatternSyn :: QName -> TCM PatternSynDefn #

# Benchmark

theBenchmark :: TCState -> Benchmark #

Lens getter for `Benchmark` from `TCState`.

updateBenchmark :: (Benchmark -> Benchmark) -> TCState -> TCState #

Lens map for `Benchmark`.

getBenchmark :: TCM Benchmark #

Lens getter for `Benchmark` from `TCM`.

modifyBenchmark :: (Benchmark -> Benchmark) -> TCM () #

Lens modify for `Benchmark`.

freshTCM :: TCM a -> TCM (Either TCErr a) #

Run a fresh instance of the TCM (with initial state). `Benchmark` info is preserved.

# Instance definitions

addImportedInstances :: Signature -> TCM () #

Look through the signature and reconstruct the instance table.

updateInstanceDefs :: (TempInstanceTable -> TempInstanceTable) -> TCState -> TCState #

Lens for `stInstanceDefs`.

modifyInstanceDefs :: (TempInstanceTable -> TempInstanceTable) -> TCM () #

getAllInstanceDefs :: TCM TempInstanceTable #

getAnonInstanceDefs :: TCM (Set QName) #

clearAnonInstanceDefs :: TCM () #

Remove all instances whose type is still unresolved.

addUnknownInstance :: QName -> TCM () #

Add an instance whose type is still unresolved.

addNamedInstance #

Arguments

:: QName | Name of the instance.
-> QName | Name of the class.
-> TCM () |

Add instance to some ``class'`.