Input 输入流-关闭

Input 输入流-关闭,input,prolog,inputstream,Input,Prolog,Inputstream,如何使用+组合关闭SWI Prolog中的输入流 bot:- repeat, write('>'), readln(X), nl, answer(X, Answer), write(Answer), nl, end(X). end(X):-member('end',X). Where X is a list of keywords to that bot 我应该如何修改源代码以获得该结果?作为SWI Prolog开发负责人Jan

如何使用
+
组合关闭SWI Prolog中的输入流

bot:-
   repeat,
     write('>'),
     readln(X), nl,
     answer(X, Answer),
     write(Answer), nl,
    end(X).

end(X):-member('end',X).

Where X is a list of keywords to that bot

我应该如何修改源代码以获得该结果?

作为SWI Prolog开发负责人Jan Wielemaker:

[
readln
是]旧有做法的产物。它没有很好的定义。使用
库(readutil)
谓词。这些都有文档记录,而且设计得更好


我已经找到了解决办法。 为了得到这个结果,我必须在流的末尾应用,然后剪切“

最后两行代码使它如我所期望的那样工作。 现在,当使用组合
Ctrl+D
时,我们可以停止它(关闭流,这与关闭bot相同)


@拉斯曼:很高兴知道,
readln
是坏的或者不是最佳的。也许下次我会用这个技巧。:)

现在,如果我输入:'end',我会得到一些默认语句和'true'值,是什么使该流关闭的,但是如何将其更改为CTRL+DHmm,而不是该库。不能解决我的问题。。也许是的,但我还没看到
bot:-
    write('Hello'),
    nl,
    write('>'),
    repeat,
    readln(X),
    answer(X, Answer),
    write(Answer),
    nl,
    write('>'),
    at_end_of_stream, !.