List 在prolog中将字符串追加到列表
我是Prolog的新手,我已经有一些问题需要理解了 是的,我正在测试附加控制台引入的一些字符串:List 在prolog中将字符串追加到列表,list,prolog,gnu-prolog,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([]). sinp
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,[]))
这个数字只是为了让控制台停止要求更多的值,我不知道是什么错了,提前谢谢大家。您应该试着理解当您输入一个数字时会发生什么,从而迫使sread_str失败 Prolog探索了所有可用于证明给定目标的替代方案,这样做会更改变量,并在路径失败时撤消此类更改。这种模型由于IO(读取/显示内置)所需的副作用而变得复杂 然后首先尝试有一个工作的sinput_str,类似这样的东西
sinput_str([String|List]):-
sread_str(String),
sinput_str(List).
sinput_str([]).