Создание динамического списка аргументов Prolog с интерфейсом C ++

Я пытаюсь создать динамический список аргументов в программе на C ++ и вызвать правило в Прологе, используя интерфейс C ++ для SWI-Prolog. Это что-то вроде этого:

    //includes

int main
{

// other declarations

PlTerm   myVariable;
PlTermv  myVector(3), vectorArgs(2);
PlTail   myList(myVector[0]);//Here I want to receive texts from keyboard or otherwise in char* variables
//and store it in "myVector",but I don't know how to do it correctly.
//I think it will not work anyway.

vectorArgs[0]= myVariable;
vectorArgs[1]= myList;

//myRule receives a variable and a list with three interchangeable elements.
PlCall ("myRule",vectorArgs);

//the true program is not so simple XD
cout<<"\nMy Variable: "<<(char *)myVariable<<'\n';

return 0;
}

Результат должен быть «myVariable» в качестве первой позиции «vectorArgs» и «myList» в качестве второй, содержащей список как «[text1, text2, text3]». Я добился успеха, используя PlCompound для составления списка, но он не будет служить, поскольку результирующий список является постоянным, и мне нужен динамический список. Я имею в виду, что список будет меняться в цикле, пока программа не достигнет конца, тогда в определенный момент может стать что-то вроде «[text3, text1, text2]».
В определенные моменты кажется, что в списке присутствует только первый элемент, это вызывает сбой программы, и мое правило не выполняется. Я ознакомился с документацией, но она показывает гораздо больше кода C ++, встроенного в Prolog, чем нет, и вот что я пытаюсь сделать, я делаю запросы к базе знаний Prolog, используя список, и выполняю действия в программе C ++, основанный на ответе, содержащемся в «myVariable». Большое спасибо!

1

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]