EvaluationEngine

org.finos.morphir.runtime.EvaluationEngine
See theEvaluationEngine companion object
abstract class EvaluationEngine[TA, VA] extends Folder[Unit, TA, VA, Step[TA, VA, EvalResult]]

Attributes

Companion
object
Graph
Supertypes
trait Folder[Unit, TA, VA, Step[TA, VA, EvalResult]]
class Object
trait Matchable
class Any
Self type

Members list

Type members

Types

final type Ctx = Context[TA, VA]

Value members

Concrete methods

def applyCase(context: Unit, value: Value[TA, VA], attributes: VA, function: Step[TA, VA, EvalResult], argument: Step[TA, VA, EvalResult]): Step[TA, VA, EvalResult]
def constructorCase(context: Unit, value: Value[TA, VA], attributes: VA, name: FQName): Step[TA, VA, EvalResult]
def createContext(bindings: VarBinding*): Ctx
def destructureCase(context: Unit, value: Value[TA, VA], attributes: VA, pattern: Pattern[VA], valueToDestruct: Step[TA, VA, EvalResult], inValue: Step[TA, VA, EvalResult]): Step[TA, VA, EvalResult]
def evaluate(value: Value[TA, VA]): Step[TA, VA, EvalResult]
def fieldCase(context: Unit, value: Value[TA, VA], attributes: VA, subjectValue: Step[TA, VA, EvalResult], fieldName: Name): Step[TA, VA, EvalResult]
def fieldFunctionCase(context: Unit, value: Value[TA, VA], attributes: VA, fieldName: Name): Step[TA, VA, EvalResult]
def ifThenElseCase(context: Unit, value: Value[TA, VA], attributes: VA, condition: Step[TA, VA, EvalResult], thenBranch: Step[TA, VA, EvalResult], elseBranch: Step[TA, VA, EvalResult]): Step[TA, VA, EvalResult]
def lambdaCase(context: Unit, value: Value[TA, VA], attributes: VA, argumentPattern: Pattern[VA], body: Step[TA, VA, EvalResult]): Step[TA, VA, EvalResult]
def letDefinitionCase(context: Unit, value: Value[TA, VA], attributes: VA, valueName: Name, valueDefinition: (Chunk[(Name, VA, Type[TA])], Type[TA], Step[TA, VA, EvalResult]), inValue: Step[TA, VA, EvalResult]): Step[TA, VA, EvalResult]
def letRecursionCase(context: Unit, value: Value[TA, VA], attributes: VA, valueDefinitions: Map[Name, (Chunk[(Name, VA, Type[TA])], Type[TA], Step[TA, VA, EvalResult])], inValue: Step[TA, VA, EvalResult]): Step[TA, VA, EvalResult]
def listCase(context: Unit, value: Value[TA, VA], attributes: VA, elements: Chunk[Step[TA, VA, EvalResult]]): Step[TA, VA, EvalResult]
def literalCase(context: Unit, value: Value[TA, VA], attributes: VA, literal: Lit): Step[TA, VA, EvalResult]
def makeContext(bindings: VarBinding*): Reader[Any, Ctx]
def patternMatchCase(context: Unit, value: Value[TA, VA], attributes: VA, branchOutOn: Step[TA, VA, EvalResult], cases: Chunk[(Pattern[VA], Step[TA, VA, EvalResult])]): Step[TA, VA, EvalResult]
def recordCase(context: Unit, value: Value[TA, VA], attributes: VA, fields: Chunk[(Name, Step[TA, VA, EvalResult])]): Step[TA, VA, EvalResult]
def referenceCase(context: Unit, value: Value[TA, VA], attributes: VA, name: FQName): Step[TA, VA, EvalResult]
def tupleCase(context: Unit, value: Value[TA, VA], attributes: VA, elements: Chunk[Step[TA, VA, EvalResult]]): Step[TA, VA, EvalResult]
override def unitCase(context: Unit, value: Value[TA, VA], attributes: VA): Step[TA, VA, EvalResult]

Attributes

Definition Classes
Folder
override def updateRecordCase(context: Unit, value: Value[TA, VA], attributes: VA, valueToUpdate: Step[TA, VA, EvalResult], fieldsToUpdate: Map[Name, Step[TA, VA, EvalResult]]): Step[TA, VA, EvalResult]

Attributes

Definition Classes
Folder
override def variableCase(context: Unit, value: Value[TA, VA], attributes: VA, name: Name): Step[TA, VA, EvalResult]

Attributes

Definition Classes
Folder
def visitApply(value: Value[TA, VA], attributes: VA, function: Step[TA, VA, EvalResult], argument: Step[TA, VA, EvalResult]): Step[TA, VA, EvalResult]
def visitConstructor(value: Value[TA, VA], attributes: VA, name: FQName): Step[TA, VA, EvalResult]
def visitDestructure(value: Value[TA, VA], attributes: VA, pattern: Pattern[VA], valueToDestruct: Step[TA, VA, EvalResult], inValue: Step[TA, VA, EvalResult]): Step[TA, VA, EvalResult]
def visitField(value: Value[TA, VA], attributes: VA, subjectValue: Step[TA, VA, EvalResult], fieldName: Name): Step[TA, VA, EvalResult]
def visitFieldFunction(value: Value[TA, VA], attributes: VA, fieldName: Name): Step[TA, VA, EvalResult]
def visitIfThenElse(value: Value[TA, VA], attributes: VA, condition: Step[TA, VA, EvalResult], thenBranch: Step[TA, VA, EvalResult], elseBranch: Step[TA, VA, EvalResult]): Step[TA, VA, EvalResult]
def visitLambda(value: Value[TA, VA], attributes: VA, argumentPattern: Pattern[VA], body: Step[TA, VA, EvalResult]): Step[TA, VA, EvalResult]
def visitLetDefinition(value: Value[TA, VA], attributes: VA, valueName: Name, valueDefinition: (Chunk[(Name, VA, Type[TA])], Type[TA], Step[TA, VA, EvalResult]), inValue: Step[TA, VA, EvalResult]): Step[TA, VA, EvalResult]
def visitLetRecursion(value: Value[TA, VA], attributes: VA, valueDefinitions: Map[Name, (Chunk[(Name, VA, Type[TA])], Type[TA], Step[TA, VA, EvalResult])], inValue: Step[TA, VA, EvalResult]): Step[TA, VA, EvalResult]
def visitList(value: Value[TA, VA], attributes: VA, elements: Chunk[Step[TA, VA, EvalResult]]): Step[TA, VA, EvalResult]
def visitLiteral(value: Value[TA, VA], attributes: VA, literal: Lit): Step[TA, VA, EvalResult]
def visitPatternMatch(value: Value[TA, VA], attributes: VA, branchOutOn: Step[TA, VA, EvalResult], cases: Chunk[(Pattern[VA], Step[TA, VA, EvalResult])]): Step[TA, VA, EvalResult]
def visitRecord(value: Value[TA, VA], attributes: VA, fields: Chunk[(Name, Step[TA, VA, EvalResult])]): Step[TA, VA, EvalResult]
def visitReference(value: Value[TA, VA], attributes: VA, name: FQName): Step[TA, VA, EvalResult]
def visitTuple(value: Value[TA, VA], attributes: VA, elements: Chunk[Step[TA, VA, EvalResult]]): Step[TA, VA, EvalResult]
def visitUnit(value: Value[TA, VA], attributes: VA): Step[TA, VA, EvalResult]
def visitUpdateRecord(value: Value[TA, VA], attributes: VA, valueToUpdate: Step[TA, VA, EvalResult], fieldsToUpdate: Map[Name, Step[TA, VA, EvalResult]]): Step[TA, VA, EvalResult]
def visitVariable(value: Value[TA, VA], attributes: VA, name: Name): Step[TA, VA, EvalResult]