users-prolog
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: asserta/retract via C++


From: Lindsey Spratt
Subject: Re: asserta/retract via C++
Date: Sat, 19 Jul 2008 15:26:22 -0400

Your problem is indeed your use of Mk_String.
Instead of
        arg[0] = Mk_String("lives(elvis)");

use
        PlTerm termArgs[1];
        termArgs[0] = Mk_String("elvis");
        int clauseFunc = CreateAllocateAtom("lives");
        arg[0] = Mk_Compound(clauseFunc, 1, termArgs);

I haven't tried this piece of code, so there may well bugs, but perhaps you get the idea: build a compound term.

Lindsey

On Jul 19, 2008, at 11:34 AM, aLu wrote:


Basically my code looks like this:

PlTerm arg[10];
int func = Find_Atom(asserta);
arg[0] = Mk_String("lives(elvis)");

Pl_Query_Begin(TRUE);
Pl_Query_Call(func, 1, arg);


//If the same program calls something like this (in another function):

int func = Find_Atom(listing);
Pl_Query_Begin(TRUE);
Pl_Query_Call(func, 0, arg2);


///




It prints something like this out to the console:

number1(abc,cba). // these are dynamic predicates
number1(cga,bae).
number2(get,gea).

'lives(elvis)'. // those brackets are my problem!

someotherpredicate(gla,era).


So how can I avoid that my predicate appears in brackets?
Is it about Mk_String? Mk_Atom(Create_Atom("lives(elvis)"))
gives the same result.

Thanks for reading










_______________________________________________
Users-prolog mailing list
address@hidden
http://lists.gnu.org/mailman/listinfo/users-prolog





reply via email to

[Prev in Thread] Current Thread [Next in Thread]