如何在 Prolog 中自动化分号

How to automate semicolon in Prolog

我正在 class 中学习 Prolog,并向我展示了一种自动按分号键直到没有更多解决方案的方法。我曾尝试在 Google 上进行搜索,但我使用 findall 得到的示例并未显示。在 Prolog shell?

中是否有任何其他方法可以自动按下 ;

例如,无需重复按;即可显示所有答案。

X = one ;
X = two ;
X = three ;
X = four.

一个简单的解决方案,以member/2为例,就是在目标后面使用fail/0谓词:

?- member(X, [1,2,3]), writeq(X), nl, fail.
1
2
3
false.