Uses of Class
net.hydromatic.morel.util.Unifier.Variable
Packages that use Unifier.Variable
Package
Description
Validates programs (represented as
AstNode),
deduces their type, and compiles them into code that can be evaluated.Utilities.
-
Uses of Unifier.Variable in net.hydromatic.morel.compile
Fields in net.hydromatic.morel.compile declared as Unifier.VariableModifier and TypeFieldDescription(package private) final @Nullable Unifier.VariableTypeResolver.Triple.cCollection (list or bag) type; null if not a collection.(package private) final Unifier.VariableTypeResolver.Triple.vprivate final Unifier.VariableTypeResolver.Inst.vArg(package private) final Unifier.VariableTypeResolver.PlusSubst.variable(package private) final Unifier.VariableTypeResolver.TermVariable.variableprivate final Unifier.VariableTypeResolver.Inst.vFnprivate final Unifier.VariableTypeResolver.Inst.vResultFields in net.hydromatic.morel.compile with type parameters of type Unifier.VariableModifier and TypeFieldDescriptionprivate final Map<Unifier.Variable, Unifier.Action> TypeResolver.actionMapprivate final PairList<Unifier.Variable, PrimitiveType> TypeResolver.preferredTypesMethods in net.hydromatic.morel.compile that return Unifier.VariableModifier and TypeMethodDescriptionprivate Unifier.VariableTypeResolver.equiv(Unifier.Variable v, Unifier.Term term) Declares that a term is equivalent to a variable.private Unifier.VariableTypeResolver.fieldVar(PairList<Ast.Id, Unifier.Variable> fieldVars) (package private) Unifier.Variable(package private) Unifier.Variable(package private) abstract Unifier.Variableprivate Unifier.VariableTypeResolver.toVariable(Unifier.Term term) Converts a term to a variable.Methods in net.hydromatic.morel.compile with parameters of type Unifier.VariableModifier and TypeMethodDescriptionprivate voidTypeResolver.constrain(Unifier.Variable arg, Unifier.Variable result, PairList<Unifier.Term, Unifier.Term> argResults) Registers that a type variable is equivalent to at least one of a list of terms.private Ast.ExpTypeResolver.deduceApplyFnType(TypeResolver.TypeEnv env, Ast.Exp fn, Unifier.Variable vFn, Unifier.Variable vArg, Unifier.Variable vResult) Deduces the datatype of a function being applied to an argument.private Ast.ApplyTypeResolver.deduceApplyType(TypeResolver.TypeEnv env, Ast.Apply apply, Unifier.Variable v) private Ast.CaseTypeResolver.deduceCaseType(TypeResolver.TypeEnv env, Ast.Case case_, Unifier.Variable v) TypeResolver.deduceMatchListType(TypeResolver.TypeEnv env, List<Ast.Match> matchList, NavigableSet<String> labelNames, Unifier.Variable argVariable, Unifier.Variable resultVariable) private Ast.MatchTypeResolver.deduceMatchType(TypeResolver.TypeEnv env, Ast.Match match, BiConsumer<Ast.IdPat, Unifier.Term> termMap, Unifier.Variable argVariable, Unifier.Variable resultVariable) private voidTypeResolver.deducePatType(TypeResolver.TypeEnv env, Ast.Pat pat, Consumer<TypeResolver.PatTerm> termMap, @Nullable NavigableSet<String> labelNames, Unifier.Variable v, UnaryOperator<Unifier.Term> accessor) Derives a type term for a pattern, collecting the names of pattern variables.private Ast.QueryTypeResolver.deduceQueryType(TypeResolver.TypeEnv env, Ast.Query query, Unifier.Variable v) private Ast.RecordSelectorTypeResolver.deduceRecordSelectorType(TypeResolver.TypeEnv env, Ast.RecordSelector recordSelector, Unifier.Variable vArg, Unifier.Variable vResult) private Ast.ExpTypeResolver.deduceType(TypeResolver.TypeEnv env, Ast.Exp node, Unifier.Variable v) private AstNodeTypeResolver.deduceValBindType(TypeResolver.TypeEnv env, Ast.ValBind valBind, PairList<Ast.IdPat, Unifier.Term> termMap, Unifier.Variable vPat) private Ast.ExpTypeResolver.deduceYieldType(TypeResolver.TypeEnv env, Ast.Exp node, Unifier.Variable v) Deduces ayieldexpression's type.private Unifier.VariableTypeResolver.equiv(Unifier.Variable v, Unifier.Term term) Declares that a term is equivalent to a variable.private Ast.ExpTypeResolver.infix(TypeResolver.TypeEnv env, Ast.InfixCall call, Unifier.Variable v) Registers an infix operator.private Ast.ExpTypeResolver.infix(TypeResolver.TypeEnv env, Ast.InfixCall call, Unifier.Variable v, Type type) Registers an infix operator whose type is a given type.private voidTypeResolver.isListIfAllAreLists(List<Unifier.Term> args, Unifier.Variable c, Unifier.Variable v) Adds a constraint that the terms inargsare all a bag or list (ofv); if all are lists thencis a list ofv, otherwisecis a bag ofv.private voidTypeResolver.isListIfBothAreLists(Unifier.Term c0, Unifier.Variable v0, Unifier.Term c1, Unifier.Variable v1, Unifier.Variable c, Unifier.Variable v) Adds a constraint thatc0is a bag or list (ofv0), andc1is a bag or list (ofv1); if both are lists thencis a list ofv, otherwisecis a bag ofv.private voidTypeResolver.isListOrBagMatchingInput(Unifier.Variable c1, Unifier.Variable v1, Unifier.Variable c2, Unifier.Variable v2) Adds a constraint thatc1is a bag or list ofv1; if it is a list thenc2is a list ofv2, otherwisec2is a bag ofv2.private voidTypeResolver.mayBeBagOrList(Unifier.Variable c, Unifier.Variable v) Adds a constraint thatcis a bag or list ofv.(package private) static TypeResolver.TripleTypeResolver.Triple.of(TypeResolver.TypeEnv env, Unifier.Variable v, Unifier.Variable c) (package private) TypeResolver.SubstTypeResolver.Subst.plus(TypeVar typeVar, Unifier.Variable variable) private Ast.ExpTypeResolver.prefix(TypeResolver.TypeEnv env, Ast.PrefixCall call, Unifier.Variable v) Registers a prefix operator.private <E extends AstNode>
ETypeResolver.reg(E node, Unifier.Variable variable, Unifier.Term term) Registers that an AST node maps to a type term and is equivalent to a variable.(package private) static TypeResolver.TripleTypeResolver.Triple.singleton(TypeResolver.TypeEnv env, Unifier.Variable v) Represents a singleton, not a collection.TypeMap.TermToTypeConverter.visit(Unifier.Variable variable) (package private) TypeResolver.TripleTypeResolver.Triple.withV(Unifier.Variable v) Method parameters in net.hydromatic.morel.compile with type arguments of type Unifier.VariableModifier and TypeMethodDescriptionprivate TypeResolver.TripleTypeResolver.deduceGroupStepType(TypeResolver.TypeEnv env, Ast.Group group, TypeResolver.Triple p, PairList<Ast.Id, Unifier.Variable> fieldVars, List<Ast.FromStep> fromSteps) private TypeResolver.TripleTypeResolver.deduceScanStepType(Ast.Scan scan, TypeResolver.Triple p, PairList<Ast.Id, Unifier.Variable> fieldVars, List<Ast.FromStep> fromSteps) private TypeResolver.TripleTypeResolver.deduceStepType(TypeResolver.TypeEnv env, Ast.FromStep step, TypeResolver.Triple p, PairList<Ast.Id, Unifier.Variable> fieldVars, List<Ast.FromStep> fromSteps) private Unifier.VariableTypeResolver.fieldVar(PairList<Ast.Id, Unifier.Variable> fieldVars) Constructors in net.hydromatic.morel.compile with parameters of type Unifier.VariableModifierConstructorDescription(package private)Inst(String name, Unifier.Variable vFn, Unifier.Variable vArg, Unifier.Variable vResult) (package private)PlusSubst(TypeResolver.Subst parent, TypeVar typeVar, Unifier.Variable variable) privateTermVariable(Unifier.Term term, Unifier.Variable variable) private -
Uses of Unifier.Variable in net.hydromatic.morel.util
Fields in net.hydromatic.morel.util declared as Unifier.VariableModifier and TypeFieldDescriptionfinal Unifier.VariableUnifier.Constraint.arg(package private) Unifier.VariableMartelliUnifier.MutableConstraint.result(package private) final Unifier.VariableMartelliUnifier.MutableConstraint.vFields in net.hydromatic.morel.util with type parameters of type Unifier.VariableModifier and TypeFieldDescriptionprivate final BiConsumer<Unifier.Variable, Unifier.Term> Tracers.ConfigurableTracerImpl.cycleHandler(package private) final Map<Unifier.Variable, Unifier.Term> MartelliUnifier.Work.resultfinal Map<Unifier.Variable, Unifier.Term> Unifier.Substitution.resultMapThe result of the unification algorithm proper.private final BiConsumer<Unifier.Variable, Unifier.Term> Tracers.ConfigurableTracerImpl.variableHandlerprivate final Map<String, Unifier.Variable> Unifier.variableMapMethods in net.hydromatic.morel.util that return Unifier.VariableModifier and TypeMethodDescriptionUnifier.variable()Creates a new variable, with a new name.Unifier.variable(int ordinal) Creates a variable, or returns an existing one with the same ordinal.Creates a variable, or returns an existing one with the same name.Methods in net.hydromatic.morel.util that return types with arguments of type Unifier.VariableModifier and TypeMethodDescription(package private) static Map<Unifier.Variable, Unifier.Term> RobinsonUnifier.compose(Map<Unifier.Variable, Unifier.Term> s1, Map<Unifier.Variable, Unifier.Term> s2) Applies s1 to the elements of s2 and adds them into a single list.Methods in net.hydromatic.morel.util with parameters of type Unifier.VariableModifier and TypeMethodDescriptionvoidUnifier.Action.accept(Unifier.Variable variable, Unifier.Term term, Unifier.Substitution substitution, BiConsumer<Unifier.Term, Unifier.Term> termPairs) private voidMartelliUnifier.act(Unifier.Variable variable, Unifier.Term term, MartelliUnifier.Work work, Unifier.Substitution substitution, Map<Unifier.Variable, Unifier.Action> termActions, Set<Unifier.Variable> set) private voidMartelliUnifier.act2(Unifier.Variable variable, Unifier.Term term, MartelliUnifier.Work work, Unifier.Substitution substitution, Map<Unifier.Variable, Unifier.Action> termActions, Set<Unifier.Variable> set) Unifier.Sequence.apply1(Unifier.Variable variable, Unifier.Term term) Unifier.Term.apply1(Unifier.Variable variable, Unifier.Term term) Applies a single-variable substitution to this term.Unifier.Variable.apply1(Unifier.Variable variable, Unifier.Term term) intUnifier.Variable.compareTo(Unifier.Variable o) Unifier.constraint(Unifier.Variable arg, PairList<Unifier.Term, Unifier.Constraint.Action> termActions) Creates a Constraint.Unifier.constraint(Unifier.Variable arg, Unifier.Variable result, PairList<Unifier.Term, Unifier.Term> argResults) Creates a constraint arising from a call to an overloaded function.booleanUnifier.Sequence.contains(Unifier.Variable variable) booleanUnifier.Term.contains(Unifier.Variable variable) Returns whether this term references a given variable.booleanUnifier.Variable.contains(Unifier.Variable variable) static Unifier.SubstitutionResultUnifier.SubstitutionResult.create(Unifier.Variable v, Unifier.Term t) Creates a substitution result with one (variable, term) entry.voidTracers.ConfigurableTracerImpl.onCycle(Unifier.Variable variable, Unifier.Term term) voidTracers.NullTracer.onCycle(Unifier.Variable variable, Unifier.Term term) voidTracers.PrintTracer.onCycle(Unifier.Variable variable, Unifier.Term term) voidUnifier.Tracer.onCycle(Unifier.Variable variable, Unifier.Term term) voidTracers.ConfigurableTracerImpl.onVariable(Unifier.Variable variable, Unifier.Term term) voidTracers.NullTracer.onVariable(Unifier.Variable variable, Unifier.Term term) voidTracers.PrintTracer.onVariable(Unifier.Variable variable, Unifier.Term term) voidUnifier.Tracer.onVariable(Unifier.Variable variable, Unifier.Term term) private voidMartelliUnifier.Work.sub(Unifier.Variable variable, Unifier.Term term, ArrayQueue<Unifier.TermTerm> queue, MartelliUnifier.Kind kind) private @Nullable Unifier.FailureMartelliUnifier.Work.subConstraint(Unifier.Variable variable, Unifier.Term term) private @Nullable Unifier.FailureMartelliUnifier.Work.substituteList(Unifier.Variable variable, Unifier.Term term) Applies a mapping to all term pairs in a list, modifying them in place.Unifier.TermVisitor.visit(Unifier.Variable variable) Method parameters in net.hydromatic.morel.util with type arguments of type Unifier.VariableModifier and TypeMethodDescriptionprivate voidMartelliUnifier.act(Unifier.Variable variable, Unifier.Term term, MartelliUnifier.Work work, Unifier.Substitution substitution, Map<Unifier.Variable, Unifier.Action> termActions, Set<Unifier.Variable> set) private voidMartelliUnifier.act(Unifier.Variable variable, Unifier.Term term, MartelliUnifier.Work work, Unifier.Substitution substitution, Map<Unifier.Variable, Unifier.Action> termActions, Set<Unifier.Variable> set) private voidMartelliUnifier.act2(Unifier.Variable variable, Unifier.Term term, MartelliUnifier.Work work, Unifier.Substitution substitution, Map<Unifier.Variable, Unifier.Action> termActions, Set<Unifier.Variable> set) private voidMartelliUnifier.act2(Unifier.Variable variable, Unifier.Term term, MartelliUnifier.Work work, Unifier.Substitution substitution, Map<Unifier.Variable, Unifier.Action> termActions, Set<Unifier.Variable> set) Unifier.Sequence.apply(Map<Unifier.Variable, Unifier.Term> substitutions) Unifier.Term.apply(Map<Unifier.Variable, Unifier.Term> substitutions) Applies a substitution to this term.Unifier.Variable.apply(Map<Unifier.Variable, Unifier.Term> substitutions) voidUnifier.Sequence.checkCycle(Map<Unifier.Variable, Unifier.Term> map, Map<Unifier.Variable, Unifier.Variable> active) voidUnifier.Term.checkCycle(Map<Unifier.Variable, Unifier.Term> map, Map<Unifier.Variable, Unifier.Variable> active) Throws CycleException if expanding this term leads to a cycle.voidUnifier.Variable.checkCycle(Map<Unifier.Variable, Unifier.Term> map, Map<Unifier.Variable, Unifier.Variable> active) private static voidUnifier.checkCycles(Map<Unifier.Variable, Unifier.Term> map, Map<Unifier.Variable, Unifier.Variable> active) (package private) static Map<Unifier.Variable, Unifier.Term> RobinsonUnifier.compose(Map<Unifier.Variable, Unifier.Term> s1, Map<Unifier.Variable, Unifier.Term> s2) Applies s1 to the elements of s2 and adds them into a single list.static Unifier.SubstitutionResultUnifier.SubstitutionResult.create(Map<Unifier.Variable, Unifier.Term> resultMap) Creates a substitution result from a map.private booleanUnifier.Substitution.hasCycles(Map<Unifier.Variable, Unifier.Term> map) (package private) static Unifier.SequenceUnifier.sequenceApply(String operator, Map<Unifier.Variable, Unifier.Term> substitutions, Iterable<Unifier.Term> terms) @NonNull Unifier.ResultMartelliUnifier.unify(List<Unifier.TermTerm> termPairs, Map<Unifier.Variable, Unifier.Action> termActions, List<Unifier.Constraint> constraints, Unifier.Tracer tracer) @NonNull Unifier.ResultRobinsonUnifier.unify(List<Unifier.TermTerm> termPairs, Map<Unifier.Variable, Unifier.Action> termActions, List<Unifier.Constraint> constraints, Unifier.Tracer tracer) abstract @NonNull Unifier.ResultUnifier.unify(List<Unifier.TermTerm> termPairs, Map<Unifier.Variable, Unifier.Action> termActions, List<Unifier.Constraint> constraints, Unifier.Tracer tracer) Tracers.ConfigurableTracer.withCycleHandler(BiConsumer<Unifier.Variable, Unifier.Term> handler) Sets handler forUnifier.Tracer.onCycle(Variable, Term).Tracers.ConfigurableTracerImpl.withCycleHandler(BiConsumer<Unifier.Variable, Unifier.Term> cycleHandler) Tracers.ConfigurableTracer.withVariableHandler(BiConsumer<Unifier.Variable, Unifier.Term> handler) Sets handler forUnifier.Tracer.onVariable(Variable, Term).Tracers.ConfigurableTracerImpl.withVariableHandler(BiConsumer<Unifier.Variable, Unifier.Term> variableHandler) Constructors in net.hydromatic.morel.util with parameters of type Unifier.VariableModifierConstructorDescription(package private)Constraint(Unifier.Variable arg, PairList<Unifier.Term, Unifier.Constraint.Action> termActions) Creates a Constraint.(package private)MutableConstraint(Unifier.Variable arg, PairList<Unifier.Term, Unifier.Constraint.Action> termActions) Creates a MutableConstraint.Constructor parameters in net.hydromatic.morel.util with type arguments of type Unifier.VariableModifierConstructorDescription(package private)Substitution(Map<Unifier.Variable, Unifier.Term> resultMap) privateSubstitutionResult(Map<Unifier.Variable, Unifier.Term> resultMap) (package private)Work(Unifier.Tracer tracer, List<Unifier.TermTerm> termPairs, List<Unifier.Constraint> constraints, Map<Unifier.Variable, Unifier.Term> result)