Input 读后执行写操作

Input 读后执行写操作,input,prolog,Input,Prolog,我正在制作一个prolog程序来玩“尼姆的游戏”,程序运行良好。我正在尝试制作一个用户界面来玩游戏,首先,用户必须说他希望游戏的初始状态是。但是,当我执行代码段中显示的代码时,只有在键入一些输入后,才会执行写操作。 有人知道如何解决这个问题吗 init(List) :- write('Enter number of matches in heaps [N1, N2, N3]:'), read(List). 我希望输出为: ?- init(X). Enter number of

我正在制作一个prolog程序来玩“尼姆的游戏”,程序运行良好。我正在尝试制作一个用户界面来玩游戏,首先,用户必须说他希望游戏的初始状态是。但是,当我执行代码段中显示的代码时,只有在键入一些输入后,才会执行写操作。 有人知道如何解决这个问题吗

init(List) :-
    write('Enter number of matches in heaps [N1, N2, N3]:'),
    read(List).
我希望输出为:

?- init(X).
Enter number of matches in heaps [N1, N2, N3]: [1, 3, 5].
X = [1, 3, 5].
但我得到了:

?- init(X).
[1, 3, 5].
Enter number of matches in heaps [N1, N2, N3]:
X = [1, 3, 5].

这可能是因为流属性
buffer
的值为
line
full
而不是
false
,所以在写调用之前,可以尝试使用
set\u stream(user\u output,buffer(false))
更改它。您可以通过在写和读之间添加nl来验证这一点。写(…),nl,读(…)。