technique-0.2.5: Procedures and Sequences
Safe HaskellNone
LanguageHaskell2010

Technique.Evaluator

Description

Given an instantiated Technique Procedure, evalutate it at runtime.

Synopsis

Documentation

data Context Source #

In order to execute a Procedure we need to supply a Context: an identifier for the event (collection of procedure calls) it is a part of, and the path history we took to get here.

Instances

Instances details
MonadReader Context Evaluate Source # 
Instance details

Defined in Technique.Evaluator

Methods

ask :: Evaluate Context #

local :: (Context -> Context) -> Evaluate a -> Evaluate a #

reader :: (Context -> a) -> Evaluate a #

newtype Evaluate a Source #

Constructors

Evaluate (ReaderT Context IO a) 

Instances

Instances details
Monad Evaluate Source # 
Instance details

Defined in Technique.Evaluator

Methods

(>>=) :: Evaluate a -> (a -> Evaluate b) -> Evaluate b #

(>>) :: Evaluate a -> Evaluate b -> Evaluate b #

return :: a -> Evaluate a #

Functor Evaluate Source # 
Instance details

Defined in Technique.Evaluator

Methods

fmap :: (a -> b) -> Evaluate a -> Evaluate b #

(<$) :: a -> Evaluate b -> Evaluate a #

Applicative Evaluate Source # 
Instance details

Defined in Technique.Evaluator

Methods

pure :: a -> Evaluate a #

(<*>) :: Evaluate (a -> b) -> Evaluate a -> Evaluate b #

liftA2 :: (a -> b -> c) -> Evaluate a -> Evaluate b -> Evaluate c #

(*>) :: Evaluate a -> Evaluate b -> Evaluate b #

(<*) :: Evaluate a -> Evaluate b -> Evaluate a #

MonadIO Evaluate Source # 
Instance details

Defined in Technique.Evaluator

Methods

liftIO :: IO a -> Evaluate a #

MonadReader Context Evaluate Source # 
Instance details

Defined in Technique.Evaluator

Methods

ask :: Evaluate Context #

local :: (Context -> Context) -> Evaluate a -> Evaluate a #

reader :: (Context -> a) -> Evaluate a #

evaluateStep :: Step -> Evaluate Value Source #

The heart of the evaluation loop. Translate from the abstract syntax tree into a monadic sequence which results in a Result.

assignNames :: [Name] -> Step -> Evaluate Promise Source #

Take a step and lauch it asynchronously, binding its result to a name. Returns a promise of a value that can be in evaluated (block on) when needed.