Safe Haskell | None |
---|---|
Language | Haskell2010 |
Language.Ginger.Interpret
Synopsis
- class Eval (m :: Type -> Type) a where
- data EvalState (m :: Type -> Type) = EvalState {
- evalEnv :: !(Env m)
- evalMutables :: !(Map RefID (Value m))
- evalNextRefID :: !RefID
- evalLoadedTemplates :: !(Map Text CachedTemplate)
- evalBlocks :: !(Map Identifier LoadedBlock)
- evalSourcePosition :: !(Maybe SourcePosition)
- evalPRNG :: !SomePRNG
- evalE :: forall (m :: Type -> Type). Monad m => Expr -> GingerT m (Value m)
- evalS :: forall (m :: Type -> Type). Monad m => Statement -> GingerT m (Value m)
- evalSs :: forall (m :: Type -> Type). Monad m => [Statement] -> GingerT m (Value m)
- evalT :: forall (m :: Type -> Type). Monad m => Template -> GingerT m (Value m)
- newtype GingerT (m :: Type -> Type) a = GingerT {}
- runGingerT :: (Monad m, SplitGen g) => GingerT m a -> Context m -> Env m -> g -> m (Either RuntimeError a)
- defEnv :: forall (m :: Type -> Type). Monad m => Env m
- defContext :: forall (m :: Type -> Type). Monad m => Context m
- setVar :: forall (m :: Type -> Type). Monad m => Identifier -> Value m -> GingerT m ()
- lookupVar :: forall (m :: Type -> Type). Monad m => Identifier -> GingerT m (Value m)
- lookupVarMaybe :: forall (m :: Type -> Type). Monad m => Identifier -> GingerT m (Maybe (Value m))
- stringify :: forall (m :: Type -> Type) t. (Monad m, MonadError RuntimeError (t m), MonadTrans t) => Value m -> t m Text
- scoped :: forall (m :: Type -> Type) a. Monad m => GingerT m a -> GingerT m a
- bind :: forall (m :: Type -> Type) a. Monad m => (Env m -> a) -> GingerT m a
- valuesEqual :: forall (m :: Type -> Type). Monad m => Value m -> Value m -> GingerT m Bool
- data RuntimeError
Documentation
class Eval (m :: Type -> Type) a where Source #
Eval
represents types that can be evaluated in some 'GingerT m' monadic
context.
data EvalState (m :: Type -> Type) Source #
Evaluation state. This keeps track of variables in scope, as well as loaded templates and blocks, and the current source position.
Constructors
EvalState | |
Fields
|
evalE :: forall (m :: Type -> Type). Monad m => Expr -> GingerT m (Value m) Source #
Evaluate an expression, dereferencing mutable refs.
newtype GingerT (m :: Type -> Type) a Source #
The Ginger interpreter monad. Provides error reporting / handling via
MonadError
, an execution context (Context
), and an evaluation state
(EvalState
).
Constructors
GingerT | |
Instances
MonadTrans GingerT Source # | |
Defined in Language.Ginger.Interpret.Type | |
Monad m => MonadError RuntimeError (GingerT m) Source # | |
Defined in Language.Ginger.Interpret.Type Methods throwError :: RuntimeError -> GingerT m a # catchError :: GingerT m a -> (RuntimeError -> GingerT m a) -> GingerT m a # | |
Monad m => Applicative (GingerT m) Source # | |
Defined in Language.Ginger.Interpret.Type | |
Functor m => Functor (GingerT m) Source # | |
Monad m => Monad (GingerT m) Source # | |
Monad m => MonadReader (Context m) (GingerT m) Source # | |
Monad m => MonadState (EvalState m) (GingerT m) Source # | |
runGingerT :: (Monad m, SplitGen g) => GingerT m a -> Context m -> Env m -> g -> m (Either RuntimeError a) Source #
lookupVarMaybe :: forall (m :: Type -> Type). Monad m => Identifier -> GingerT m (Maybe (Value m)) Source #
stringify :: forall (m :: Type -> Type) t. (Monad m, MonadError RuntimeError (t m), MonadTrans t) => Value m -> t m Text Source #
data RuntimeError Source #
Constructors
ArgumentError | |
TagError | |
NonCallableObjectError Text | Object that was attempted to be used as a callable |
NotInScopeError Text | Identifier |
NotImplementedError Text | The thing that isn't implemented |
NumericError | |
TemplateFileNotFoundError Text | Template name |
TemplateParseError | |
FatalError Text | |
PositionedError !SourcePosition !RuntimeError |