我的代码正在使用read_line_to_codes/2
和read_stream_to_codes/2
来阅读user_input
。这就是这些读取的组织方式:
main :-
read_line_to_codes(user_input, [A]),
read_line_to_codes(user_input, B),
/* Some parsing happens here */
read_stream_to_codes(user_input, C),
/* Some more parsing happens here and the code goes on */
我正在使用以下命令编译程序:
swipl -q -t main -o program -c program.pl
程序运行正常,但是由于在main中读取了这些内容,我得到一个带有|:|:
个字符的输出(每当用户输入内容时,swipl控制台显示|:
)。当我从程序中删除所有I / O代码时,它会在不输出这些字符的情况下运行。
有没有办法摆脱这种行为?
答案 0 :(得分:1)
您必须使用prompt1/1
谓词设置下一行的提示,或prompt/2
更改为全局提示消息。
E.g。使用prompt1/1
:
?- read_line_to_codes(user_input, L).
|: test
L = [116, 101, 115, 116].
?- prompt1(''), read_line_to_codes(user_input, L).
test
L = [116, 101, 115, 116].
或使用prompt/2
:
?- prompt(Old, 'Give me: ').
Old = '|: '.
?- read_line_to_codes(user_input, L).
Give me: abc
L = [97, 98, 99].