| License | MIT |
|---|---|
| Safe Haskell | None |
| Language | GHC2021 |
Language.Egison.EvalState
Description
This module defines the state during the evaluation.
Synopsis
- data EvalState = EvalState {}
- initialEvalState :: EvalState
- class (Applicative m, Monad m) => MonadEval (m :: Type -> Type) where
- pushFuncName :: Var -> m ()
- topFuncName :: m Var
- popFuncName :: m ()
- getFuncNameStack :: m [Var]
- getInstanceEnv :: m InstanceEnv
- registerInstance :: String -> String -> Type -> String -> m ()
- lookupInstance :: String -> String -> Type -> m (Maybe String)
- getConstructorEnv :: m ConstructorEnv
- registerConstructor :: String -> ConstructorInfo -> m ()
- lookupConstructor :: String -> m (Maybe ConstructorInfo)
- getTypeEnv :: m TypeEnv
- setTypeEnv :: TypeEnv -> m ()
- extendTypeEnv :: Var -> TypeScheme -> m ()
- getClassEnv :: m ClassEnv
- setClassEnv :: ClassEnv -> m ()
- getPatternEnv :: m PatternTypeEnv
- setPatternEnv :: PatternTypeEnv -> m ()
- getPatternFuncEnv :: m PatternTypeEnv
- setPatternFuncEnv :: PatternTypeEnv -> m ()
- mLabelFuncName :: MonadEval m => Maybe Var -> m a -> m a
- type InstanceEnv = HashMap String (HashMap String MethodDict)
- type MethodDict = HashMap Type String
- type ConstructorEnv = HashMap String ConstructorInfo
- data ConstructorInfo = ConstructorInfo {
- ctorTypeName :: String
- ctorArgTypes :: [Type]
- ctorTypeParams :: [String]
- type PatternConstructorEnv = PatternTypeEnv
Documentation
Constructors
| EvalState | |
Fields
| |
Instances
class (Applicative m, Monad m) => MonadEval (m :: Type -> Type) where Source #
Methods
pushFuncName :: Var -> m () Source #
topFuncName :: m Var Source #
popFuncName :: m () Source #
getFuncNameStack :: m [Var] Source #
getInstanceEnv :: m InstanceEnv Source #
registerInstance :: String -> String -> Type -> String -> m () Source #
lookupInstance :: String -> String -> Type -> m (Maybe String) Source #
getConstructorEnv :: m ConstructorEnv Source #
registerConstructor :: String -> ConstructorInfo -> m () Source #
lookupConstructor :: String -> m (Maybe ConstructorInfo) Source #
getTypeEnv :: m TypeEnv Source #
setTypeEnv :: TypeEnv -> m () Source #
extendTypeEnv :: Var -> TypeScheme -> m () Source #
getClassEnv :: m ClassEnv Source #
setClassEnv :: ClassEnv -> m () Source #
getPatternEnv :: m PatternTypeEnv Source #
setPatternEnv :: PatternTypeEnv -> m () Source #
getPatternFuncEnv :: m PatternTypeEnv Source #
setPatternFuncEnv :: PatternTypeEnv -> m () Source #
Instances
type InstanceEnv = HashMap String (HashMap String MethodDict) Source #
type MethodDict = HashMap Type String Source #
Instance environment: maps class name -> method name -> type -> implementation The implementation is stored as a function reference (Var name)
data ConstructorInfo Source #
Constructor environment: maps constructor name -> constructor info Used for type inference and pattern matching
Constructors
| ConstructorInfo | |
Fields
| |
Instances
| Show ConstructorInfo Source # | |
Defined in Language.Egison.EvalState Methods showsPrec :: Int -> ConstructorInfo -> ShowS # show :: ConstructorInfo -> String # showList :: [ConstructorInfo] -> ShowS # | |
| Eq ConstructorInfo Source # | |
Defined in Language.Egison.EvalState Methods (==) :: ConstructorInfo -> ConstructorInfo -> Bool # (/=) :: ConstructorInfo -> ConstructorInfo -> Bool # | |
type PatternConstructorEnv = PatternTypeEnv Source #
Pattern constructor environment: maps pattern constructor name -> type scheme This uses the same format as PatternTypeEnv for consistency