Пролог: принудительная инициализация переменных для печати из командной строки - PullRequest
0 голосов
/ 21 января 2019

Я пытаюсь написать команду bash, которая откроет Prolog (или logtalk в этом случае), оценит переменную ( A здесь), запишет имя переменной и выйдет.Я зашел так далеко:

swilgt -q -s prolog/condep.lgt -s /tmp/tmp_xc5gfpp.lgt -g 'state::objectOfEvent(A,eve140642825991448), writeln(A).' -t halt.

однако выдает ответы типа _9956.Однако если я перейду в интерактивный режим и выполню тот же запрос, он выдаст правильный ответ.

Этот SO-ответ указывает, что это происходит потому, что переменная A еще не инициализирован - как я могу для A инициализировать перед записью ответа?

1 Ответ

0 голосов
/ 21 января 2019

Я посмотрел в интерактивном режиме, и он печатал первый возможный ответ (_9956, переменная метка-заполнитель), ДО оценки A в соответствии с state::objectOfEvent, затем печатая «истинный» ответ на A .

Я мог бы исключить опцию заполнителя, убедившись, что значение A было не свободной переменной с использованием nonvar / 1 :

state::objectOfEvent(A,eve140642825991448), nonvar(A), write(A)

Это выглядит довольно забавно, и я бы хотел услышать какие-нибудь лучшие решения.

...