Создать список с помощью SWI-cpp.h

Я пытаюсь использовать движок SWI-PL в C ++, используя SWI-cpp.h,
У меня нет учебника, я использую только эта ссылка и я ищу в репозиториях GitHub несколько примеров.

Мой код работает нормально, за исключением одной вещи; вызывая это определение:
foo([bar]).
Как видите, определение требует списка.

Так как я не могу поставить PlTermv в PlTermvЯ понятия не имею, как построить список. Я мог бы использовать PlTail, но я знаю только способ, которым я должен добавить пустую голову.

Это мой код CPP:

PlTermv av(1);

// Load external pl file that contaions the foo definition.
PlCall("consult", PlTerm("foobar.pl"));

PlAtom bar = PlAtom("hello");
// I want Prolog to return a list with this compound.
av[0] = PlCompound("foo", PlTermv(bar));
PlCall("call", av); // So that this statement returns 'true' instead of 'false'.

Как я мог изменить этот код таким образом, чтобы PlCall("call",av); возвращаетсяtrue?

0

Решение

Создание списков в Прологе может быть сделано с помощью atomic_list_concat / 3 сказуемое.

Это означает PlCall должен быть вызван еще раз в коде, и его результат должен быть сохранен в PlTerm:

PlTermv av(1);

// Load external pl file that contaions the foo definition.
PlCall("consult", PlTerm("foobar.pl"));

PlTerm list;

// Use space as separator. Sets the value of 'list' to '[bar]'.
PlCall("atomic_list_concat", PlTermv(list, " ", "bar"));

av[0] = PlCompound("foo", PlTermv(list));
PlCall("call", av); // returns 'true'
0

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

Других решений пока нет …

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