| 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 | |