protected GroundFunctionalTermImpl(Predicate functor, List<? extends ImmutableTerm> terms) throws GroundTermTools.NonGroundTermException { this(GroundTermTools.castIntoGroundTerms(terms), functor); }
public GroundFunctionalTermImpl(Function functionalTermToClone) throws GroundTermTools.NonGroundTermException { this(functionalTermToClone.getFunctionSymbol(), GroundTermTools.castIntoGroundTerms(functionalTermToClone.getTerms())); }
public static GroundTerm castIntoGroundTerm(Term term) throws NonGroundTermException{ if (term instanceof GroundTerm) return (GroundTerm) term; if (term instanceof Function) { Function functionalTerm = (Function) term; // Recursive FunctionSymbol functionSymbol = Optional.of(functionalTerm.getFunctionSymbol()) .filter(p -> p instanceof FunctionSymbol) .map(p -> (FunctionSymbol)p) .orElseThrow(() -> new NonGroundTermException(term + "is not using a function symbol but a" + functionalTerm.getFunctionSymbol().getClass())); return new GroundFunctionalTermImpl(castIntoGroundTerms(functionalTerm.getTerms()), functionSymbol); } throw new NonGroundTermException(term + " is not a ground term"); }
public static GroundTerm castIntoGroundTerm(Term term) throws NonGroundTermException{ if (term instanceof GroundTerm) return (GroundTerm) term; if (term instanceof Function) { Function functionalTerm = (Function) term; // Recursive return new GroundFunctionalTermImpl(functionalTerm.getFunctionSymbol(), castIntoGroundTerms(functionalTerm.getTerms())); } throw new NonGroundTermException(term + " is not a ground term"); }