Prolog.KnowledgeBase.CallPrimitive C# (CSharp) Method

CallPrimitive() private method

private CallPrimitive ( Symbol functor, Prolog.PrologPrimitives handler, object args, PrologContext context ) : IEnumerable
functor Symbol
handler Prolog.PrologPrimitives
args object
context PrologContext
return IEnumerable
        IEnumerable<CutState> CallPrimitive(Symbol functor, PrologPrimitives.PrimitiveImplementation handler, object[] args, PrologContext context)
        {
            if (Trace)
                context.TraceOutput("Goal: {0}", new Structure(functor, args));
            foreach (var state in handler(args, context))
            {
                if (Trace)
                context.TraceOutput((state == CutState.Continue) ? "Succeed: {0}" : "Cut: {0}", new Structure(functor, args));
                yield return state;
                if (Trace)
                    context.TraceOutput("Retry: {0}", new Structure(functor, args));
            }
            if (Trace)
                context.TraceOutput("Fail: {0}", new Structure(functor, args));
            context.PopGoalStack();
        }