Exemple #1
0
 @Override
 public boolean unify(Term t1) {
   // used to be implemented using recursion but caused stack overflow problems with long lists
   Term t2 = this;
   do {
     TermType tType = t1.getType();
     if (tType == TermType.LIST) {
       if (t2.getArgument(0).unify(t1.getArgument(0)) == false) {
         return false;
       }
       t1 = t1.getArgument(1);
       t2 = t2.getArgument(1);
     } else if (tType.isVariable()) {
       return t1.unify(t2);
     } else {
       return false;
     }
   } while (t2.getType() == TermType.LIST);
   return t2.unify(t1);
 }