Class EmptyList
- java.lang.Object
-
- org.projog.core.term.EmptyList
-
- All Implemented Interfaces:
Term
public final class EmptyList extends java.lang.Object implements Term
Represents a data structure with noTerms.- See Also:
List,ListFactory
-
-
Field Summary
Fields Modifier and Type Field Description static EmptyListEMPTY_LISTSingleton instance
-
Constructor Summary
Constructors Modifier Constructor Description privateEmptyList()Private constructor to force use ofEMPTY_LIST
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidbacktrack()Reverts this term back to its original state prior to any unifications.Termcopy(java.util.Map<Variable,Variable> sharedVariables)Returns a copy of this term.Term[]getArgs()Returns an array of this terms's arguments.TermgetArgument(int index)Returns the term at the specified position in this term's arguments.java.lang.StringgetName()ReturnsListFactory.LIST_PREDICATE_NAME.intgetNumberOfArguments()Returns the number of arguments in this term.EmptyListgetTerm()Returns the current instantiated state of this term.TermTypegetType()ReturnsTermType.EMPTY_LIST.booleanisImmutable()Returnstrueis this term is immutable.java.lang.StringtoString()booleanunify(Term t)Attempts to unify this term to the specified term.
-
-
-
Field Detail
-
EMPTY_LIST
public static final EmptyList EMPTY_LIST
Singleton instanceFor performance reasons, use t.getType()==TermType.EMPTY_LIST to check if a term is an empty list, rather than using t.getTerm()==EmptyList.EMPTY_LIST. TODO confirm this is what the code is doing
-
-
Constructor Detail
-
EmptyList
private EmptyList()
Private constructor to force use ofEMPTY_LIST
-
-
Method Detail
-
backtrack
public void backtrack()
Description copied from interface:TermReverts this term back to its original state prior to any unifications.Makes all
Variables that this term consists of uninstantiated.- Specified by:
backtrackin interfaceTerm- See Also:
Term.unify(Term)
-
copy
public Term copy(java.util.Map<Variable,Variable> sharedVariables)
Description copied from interface:Term
-
getTerm
public EmptyList getTerm()
Description copied from interface:TermReturns the current instantiated state of this term.Returns a representation of this term with all instantiated
Variables replaced with the terms they are instantiated with.
-
isImmutable
public boolean isImmutable()
Description copied from interface:TermReturnstrueis this term is immutable.A term is considered immutable if its value will never change as a result of executing its
Term.unify(Term)orTerm.backtrack()methods. A term will not be considered immutable if it is aVariableor any of its arguments are not immutable.- Specified by:
isImmutablein interfaceTerm- Returns:
trueis this term is immutable
-
getArgs
public Term[] getArgs()
Description copied from interface:TermReturns an array of this terms's arguments.Note: for performance reasons the array returned is the same array used internally be the term instance so be careful not to alter the array returned as changes will be reflected in the original term.
- Specified by:
getArgsin interfaceTerm- Returns:
- array of this terms's arguments
- See Also:
Term.getArgument(int)
-
getNumberOfArguments
public int getNumberOfArguments()
Description copied from interface:TermReturns the number of arguments in this term.- Specified by:
getNumberOfArgumentsin interfaceTerm- Returns:
- number of arguments in this term
-
getArgument
public Term getArgument(int index)
Description copied from interface:TermReturns the term at the specified position in this term's arguments.- Specified by:
getArgumentin interfaceTerm- Parameters:
index- index of the argument to return- Returns:
- the term at the specified position in this term's arguments
- Throws:
java.lang.ArrayIndexOutOfBoundsException- as this implementation ofTermhas no arguments
-
getName
public java.lang.String getName()
ReturnsListFactory.LIST_PREDICATE_NAME.- Specified by:
getNamein interfaceTerm- Returns:
ListFactory.LIST_PREDICATE_NAME
-
getType
public TermType getType()
ReturnsTermType.EMPTY_LIST.- Specified by:
getTypein interfaceTerm- Returns:
TermType.EMPTY_LIST
-
unify
public boolean unify(Term t)
Description copied from interface:TermAttempts to unify this term to the specified term.The rules for deciding if two terms are unifiable are as follows:
- An uninstantiated
Variablewill unify with any term. As a result theVariablewill become instantiated to the other term. The instantiaton will be undone whenTerm.backtrack()is next called on theVariable - Non-variable terms will unify with other terms that are of the same
TermTypeand have the same value. The exact meaning of "having the same value" will vary between term types but will include that the two terms being unified have the same number of arguments and that all of their corresponding arguments unify.
- Specified by:
unifyin interfaceTerm- Parameters:
t- the term to unify this term against- Returns:
trueif the attempt to unify this term to the given term was successful- See Also:
Term.backtrack()
- An uninstantiated
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object- Returns:
[]
-
-