首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Prolog:如何将两个谓词合并成一个列表

Prolog:如何将两个谓词合并成一个列表
EN

Stack Overflow用户
提问于 2013-09-01 13:48:05
回答 1查看 218关注 0票数 0

问题1

如何将weatherInfo(X,Y)airDensity(X,Y)相结合,使其成为1列表。如果可能的话我希望是这样的。

代码语言:javascript
复制
     :- dynamic analize/3

        outlook(Sunny).
        outlook(Overcast).
        outlook(Rain).

        temperature(Hot).
        temperature(Mild).
        temperature(Cool).

        humidity(Normal).
        humidity(High).

        windy(True).
        windy(False).

        weatherInfo(Sunny,Mild).
        weatherInfo(Sunny,Cool).
        weatherInfo(Overcast,Hot).                                           
        weatherInfo(Overcast,Mild).                                        
        weatherInfo(Overcast,Cool).
        weatherInfo(Rain,Mild).
        weatherInfo(Rain,Cool).

        airDensity(Normal,False).
        airDensity(Normal,True).
        airDensity(High,False).
        airDensity(High,True).

        prediction(Result):-
            analize([],[], _).
            analize([H1|T1], [H2,T2], Result), 
            append(T1, [H2,T2], Result),
            assertz([H1|T1], _, [H2,T2]),
            Result =.. [[H1|T1], [H2,T2]),
            write(L1, L2),
            analize(NewT, NewL, Result).

问题2

我需要删除旧数据,但我不知道该在哪里做。是在附加后还是在追加之前?

EN

回答 1

Stack Overflow用户

发布于 2013-09-01 20:07:55

一般性评论:Sunny是一个变量,所以outlook(Sunny).断言Sunny的任何值都是可以接受的。要获得有意义的信息,您需要outlook(sunny).等。

Q1:还不清楚,为什么要断言/撤回子句,CapelliC指向findall的指针是您最需要的。

Q2:重新启动prolog解释器可以清除所断言的事实。如果您想在会话中这样做,缩回/1可能会派上用场(否则您需要分别撤回每个事实)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18559053

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档