将字符串附加到prolog中的列表

时间:2012-12-16 17:31:12

标签: list prolog gnu-prolog

我是Prolog的新手,我已经遇到了一些需要理解的问题 是的,我正在测试附加一些由控制台引入的字符串:

append_str([],Adder,Adder).
append_str([Head|Tail],Adder,Result):-
    append_str(Tail,[Head|Adder],Result).

sread_str(String):-
    read(String),
    atom(String).

sinput:-
    sinput_str([]).

sinput_str(Lista):-
    sread_str(String),
    sinput_str([String|List]).

sinput_str(List):-
    append_str(List,[],Result),
    nl,
    display(Result),
    nl.

最终总是得到这个输出:

|-? sinput.
sinput.
hello.
hello.
world.
world.
9.
9.

'.'(hello,'.'(world,[]))

这个数字只是让控制台结束时要求更多的值,我不知道出了什么问题,谢谢你们。

1 个答案:

答案 0 :(得分:0)

您应该尝试了解输入数字时发生的情况,强制 sread_str失败。

Prolog探索了可用于证明给定目标的所有替代方案,并且在路径失败时更改变量撤消此类更改。这种模型很复杂,IO所需的副作用(读取/显示内置)。

然后首先尝试使用工作 sinput_str,类似这样

sinput_str([String|List]):-
    sread_str(String),
    sinput_str(List).
sinput_str([]).