【问题标题】:appending strings to lists in prolog将字符串附加到序言中的列表
【发布时间】:2012-12-16 17:31:11
【问题描述】:

我是 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,[]))

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

【问题讨论】:

    标签: list prolog gnu-prolog


    【解决方案1】:

    你应该试着理解当你输入一个数字时会发生什么,强制 sread_str 失败。

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

    然后首先尝试有一个工作 sinput_str,像这样

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

    【讨论】:

      猜你喜欢
      • 2018-09-13
      • 2012-12-05
      • 2012-09-14
      • 1970-01-01
      • 1970-01-01
      • 2021-06-26
      • 1970-01-01
      • 2016-07-03
      • 2020-06-20
      相关资源
      最近更新 更多