Package net.hydromatic.morel.util
Class Unifier.Sequence
- java.lang.Object
-
- net.hydromatic.morel.util.Unifier.Sequence
-
- All Implemented Interfaces:
Unifier.Term
- Enclosing class:
- Unifier
public static final class Unifier.Sequence extends Object implements Unifier.Term
A sequence of terms.A sequence [a b c] is often printed "a(b, c)", as if "a" is the type of node and "b" and "c" are its children.
-
-
Field Summary
Fields Modifier and Type Field Description StringoperatorList<Unifier.Term>terms
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description <R> Raccept(Unifier.TermVisitor<R> visitor)Unifier.Termapply(Map<Unifier.Variable,Unifier.Term> substitutions)voidcheckCycle(Map<Unifier.Variable,Unifier.Term> map, Map<Unifier.Variable,Unifier.Variable> active)Throws CycleException if expanding this term leads to a cycle.booleancontains(Unifier.Variable variable)booleanequals(Object obj)private booleanequalsShallow(Unifier.Sequence sequence)Compares whether two sequences have the same terms.inthashCode()private static <E> booleanlistEqual(List<E> list0, List<E> list1)StringtoString()
-
-
-
Field Detail
-
operator
public final String operator
-
terms
public final List<Unifier.Term> terms
-
-
Constructor Detail
-
Sequence
Sequence(String operator, List<Unifier.Term> terms)
-
Sequence
Sequence(String operator)
-
-
Method Detail
-
apply
public Unifier.Term apply(Map<Unifier.Variable,Unifier.Term> substitutions)
- Specified by:
applyin interfaceUnifier.Term
-
checkCycle
public void checkCycle(Map<Unifier.Variable,Unifier.Term> map, Map<Unifier.Variable,Unifier.Variable> active) throws Unifier.CycleException
Description copied from interface:Unifier.TermThrows CycleException if expanding this term leads to a cycle.- Specified by:
checkCyclein interfaceUnifier.Term- Throws:
Unifier.CycleException
-
equalsShallow
private boolean equalsShallow(Unifier.Sequence sequence)
Compares whether two sequences have the same terms. Compares addresses, not contents, to avoid hitting cycles if any of the terms are cyclic (e.g. "X = f(X)").
-
contains
public boolean contains(Unifier.Variable variable)
- Specified by:
containsin interfaceUnifier.Term
-
accept
public <R> R accept(Unifier.TermVisitor<R> visitor)
- Specified by:
acceptin interfaceUnifier.Term
-
-