ginger2
Safe HaskellNone
LanguageHaskell2010

Language.Ginger.Interpret.Eval

Synopsis

Documentation

class Eval (m :: Type -> Type) a where Source #

Eval represents types that can be evaluated in some 'GingerT m' monadic context.

Methods

eval :: a -> GingerT m (Value m) Source #

Instances

Instances details
MonadRandom m => Eval m Expr Source # 
Instance details

Defined in Language.Ginger.Interpret.Eval

Methods

eval :: Expr -> GingerT m (Value m) Source #

MonadRandom m => Eval m Statement Source # 
Instance details

Defined in Language.Ginger.Interpret.Eval

Methods

eval :: Statement -> GingerT m (Value m) Source #

MonadRandom m => Eval m Template Source # 
Instance details

Defined in Language.Ginger.Interpret.Eval

Methods

eval :: Template -> GingerT m (Value m) Source #

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.

Instances

Instances details
Semigroup (EvalState m) Source # 
Instance details

Defined in Language.Ginger.Interpret.Type

Methods

(<>) :: EvalState m -> EvalState m -> EvalState m #

sconcat :: NonEmpty (EvalState m) -> EvalState m #

stimes :: Integral b => b -> EvalState m -> EvalState m #

Monad m => MonadState (EvalState m) (GingerT m) Source # 
Instance details

Defined in Language.Ginger.Interpret.Type

Methods

get :: GingerT m (EvalState m) #

put :: EvalState m -> GingerT m () #

state :: (EvalState m -> (a, EvalState m)) -> GingerT m a #

evalE :: forall (m :: Type -> Type). MonadRandom m => Expr -> GingerT m (Value m) Source #

Evaluate an expression, dereferencing mutable refs.

evalS :: forall (m :: Type -> Type). MonadRandom m => Statement -> GingerT m (Value m) Source #

evalSs :: forall (m :: Type -> Type). MonadRandom m => [Statement] -> GingerT m (Value m) Source #

evalT :: forall (m :: Type -> Type). MonadRandom m => Template -> GingerT m (Value m) Source #

stringify :: forall (m :: Type -> Type) t. (Monad m, MonadError RuntimeError (t m), MonadTrans t) => Value m -> t m Text Source #

valuesEqual :: forall (m :: Type -> Type). Monad m => Value m -> Value m -> GingerT m Bool Source #

asBool :: forall (m :: Type -> Type). Monad m => Text -> Value m -> GingerT m Bool Source #

asTruth :: forall (m :: Type -> Type). Monad m => Text -> Value m -> GingerT m Bool Source #

getAttr :: forall (m :: Type -> Type). Monad m => Value m -> Identifier -> GingerT m (Maybe (Value m)) Source #

getItem :: forall (m :: Type -> Type). Monad m => Value m -> Value m -> GingerT m (Maybe (Value m)) Source #

getItemRaw :: Monad m => Value m -> Value m -> m (Maybe (Value m)) Source #

loadTemplate :: forall (m :: Type -> Type). Monad m => Text -> GingerT m LoadedTemplate Source #