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希望避免使用分号),或者称之为“打印参与者,失败;真”。我修复了代码。顺便说一下,我对这个问题的解释是“我不想一直按分号键,只是为了得到所有答案”。因此我认为代码中的分号无关紧要。是的,这就是我的意思罗兰,非常感谢。它很好用。