每当我使用swi-prolog编译任何内容时,它会在用户输入之前添加|:
来表明你应该写一些东西,这很好,但是我需要将这个程序的输出传递给另一个程序,最好没有|:
。
我的编译选项是:
swipl -nodebug -g true -O -q --toplevel=quiet --stand_alone=true -o main -c main.pl
答案 0 :(得分:3)
你需要说
prompt(_, '')
在开始阅读和编写标准流之前,在程序中的某处。来自entry for prompt/2
:
如果调用了其中一个读取谓词并且光标位于左边距,则会打印提示。每当给出换行符并且该术语尚未终止时,也会打印它。只有当前输入流是用户时才会打印提示。
上面的调用只是将提示设置为空原子(忽略之前的提示)。例如,使用以下prompt.pl
:
:- current_prolog_flag(verbose, silent).
:- use_module(library(readutil)).
main :-
read_line_to_codes(user_input, Line),
format("~s~n", [Line]),
halt.
main :- halt(1).
然后:
$ swipl -q --goal=main -o prompt -c prompt.pl
$ ./prompt
|:foobar
foobar
$
:- current_prolog_flag(verbose, silent). :- use_module(library(readutil)). main :- prompt(_, ''), read_line_to_codes(user_input, Line), format("~s~n", [Line]), halt. main :- halt(1).
它消失了:
$ swipl -q --goal=main -o prompt -c prompt.pl
$ ./prompt
foobar
foobar
$
如果您添加了与我的第一版prompt.pl
类似的程序以及结果输出,那么更多人可能更容易理解您的具体要求。