PlCall Method (predicate, args)

SWI-Prolog SbsSW.SwiPlCs

Swi-cs-pl - A CSharp class library to connect .NET languages with SWI-Prolog PlCall Method (predicate, args)
SwiPlCs interfaceSbsSW.SwiPlCsPlQueryPlCall(String, PlTermV)
Create a query where name defines the name of the predicate and av the argument vector. The arity is deduced from av. The predicate is located in the Prolog module user.
Declaration Syntax
C# Visual Basic Visual C++
public static bool PlCall(
	string predicate,
	PlTermV args
)
Public Shared Function PlCall ( _
	predicate As String, _
	args As PlTermV _
) As Boolean
public:
static bool PlCall(
	String^ predicate, 
	PlTermV args
)
Parameters
predicate (String)
defines the name of the predicate
args (PlTermV)
Is a PlTermV of arguments for the predicate
Return Value
Return true or false as the result of NextSolution() or throw an exception.
Remarks

Create a PlQuery from the arguments, generates the first solution by NextSolution() and destroys the query.

Examples

This sample shows a query with a compound term as an argument.

CopyC#
public void PlCallQueryCompound_termv()
{
    string[] mm = { "aa1", "aa2", "aa3" };
    build_pred();   // create: test(comp(X,Y)) :- member(Z,[1,2,3]), atomic_list_concat([X,Z],Y).
    PlTerm var1 = PlTerm.PlVar();
    PlTerm comp = PlTerm.PlCompound("comp", new PlTerm("aa"), var1);
    using (PlQuery q = new PlQuery("test", new PlTermV(comp)))
    {
        int i = 0;
        foreach (PlTermV s in q.Solutions)
        {
            Assert.AreEqual(mm[i++].ToString(), var1.ToString());
            Assert.AreEqual(comp.ToString(), s[0].ToString());
        }
    }
}

Assembly: SwiPlCs (Module: SwiPlCs) Version: 1.1.60301.0 (1.1.60301.0)