我正在尝试编写一个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
。但是,如果我进入交互模式并运行相同的查询,它将输出正确的答案。
This SO answer表示这是因为变量 A 尚未初始化-我该如何在写出答案之前让 A 初始化? >
答案 0 :(得分:0)
我处于交互模式,它正在打印第一个可能的答案(_9956,可变占位符),然后根据state::objectOfEvent
评估 A ,然后将“ true”答案打印到 A 。
我可以通过确保A的值为not a free variable using nonvar/1来消除占位符选项:
state::objectOfEvent(A,eve140642825991448), nonvar(A), write(A)
这感觉很hacky,我很想听听任何更好的解决方案。