Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Variables Prolog中的变量绑定_Variables_Binding_Prolog - Fatal编程技术网

Variables Prolog中的变量绑定

Variables Prolog中的变量绑定,variables,binding,prolog,Variables,Binding,Prolog,我写了一个谓词普通参与者(Person,PairEvent)。它从我的知识库中返回成对的事实。我想知道是否有任何方法可以执行变量绑定并收集所有结果,而不必每次都使用分号 谢谢 I.是的,您可以使用findall/3。但是,根据你真正想做什么,通常有更好的方法。你想输出东西吗?然后试试这个: print_participants :- common_participant(Person, PairEvent), write(Person), write(' participates

我写了一个谓词
普通参与者(Person,PairEvent)
。它从我的知识库中返回成对的事实。我想知道是否有任何方法可以执行变量绑定并收集所有结果,而不必每次都使用分号

谢谢


I.

是的,您可以使用
findall/3
。但是,根据你真正想做什么,通常有更好的方法。你想输出东西吗?然后试试这个:

print_participants :-
    common_participant(Person, PairEvent),
    write(Person), write(' participates in '), write(PairEvent), write('.'), nl,
    fail.
print_participants :-
    true.
这样,您就不需要同时在一个大列表中保存所有组合,而只需要打印所需的组合


编辑:按照卡雷尔的建议修复了代码。

我不确定我是否理解这个问题。每次都是什么?你的打印参与者/0不会打印所有的解决方案,除非你使用分号(OP希望避免使用分号),或者称之为“打印参与者,失败;真”。我修复了代码。顺便说一下,我对这个问题的解释是“我不想一直按分号键,只是为了得到所有答案”。因此我认为代码中的分号无关紧要。是的,这就是我的意思罗兰,非常感谢。它很好用。