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 BasicVisual C++F#
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
)
static member PlCall : 
        predicate : string * 
        args : PlTermV -> bool 
Parameters
predicate (String)
defines the name of the predicate
args (PlTermV)
Is a PlTermV of arguments for the predicate
Return Value
Boolean
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.

 Copy imageCopy
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.dll) Version: 1.1.60601.0 (1.1.60601.0)