public override string ToPrologString() { try { if (Arguments.Any()) { if (Functor.TheString != "or") { return(Functor + "(" + Arguments.Select(n => n.ToPrologString()).Aggregate((workingSentence, next) => workingSentence + ", " + next) + ")"); } else { return("(" + Arguments.Select(n => n.ToPrologString()).Aggregate((workingSentence, next) => workingSentence + "; " + next) + ")"); } } else { return(Functor.ToString()); // prolog doesn't like predicates with zero arity with parentheses } } catch (Exception) { throw; } }
public override string ToString() { if (Functor is Primitive) { return(((Primitive)(Functor)).ToString(Parameters)); } if (Arity == 0) { return(Functor.ToString()); } StringBuilder sb = new StringBuilder(Parameters.Length * 20); sb.Append(Functor.ToString()); sb.Append("("); for (int np = 0; np <= Parameters.Length - 1; np++) { if (Parameters[np] == null) { sb.Append("nil"); } else { sb.Append(Parameters[np].ToString()); } if (np < Parameters.Length - 1) { sb.Append(","); } } sb.Append(")"); return(sb.ToString()); }