List 序言:如何将2个谓词组合成1个列表 问题1

List 序言:如何将2个谓词组合成1个列表 问题1,list,prolog,List,Prolog,如何将天气信息(X,Y)与空气密度(X,Y)组合成一个列表。如果可能的话,我希望是这样 :- dynamic analize/3 outlook(Sunny). outlook(Overcast). outlook(Rain). temperature(Hot). temperature(Mild). temperature(Cool). humidity(Normal

如何将天气信息(X,Y)与空气密度(X,Y)组合成一个列表。如果可能的话,我希望是这样

     :- 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
我需要删除旧数据,但我不知道应该在哪里删除。是在追加之后还是追加之前?

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

问题1:现在还不清楚,为什么要断言/收回子句,Capelical指向findall的指针无疑是您所需要的


问题2:重新启动prolog解释器将清除您断言的事实。如果您想在会话中执行此操作,可能会派上用场(否则您需要分别收回每个事实)。

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

问题1:现在还不清楚,为什么要断言/收回子句,Capelical指向findall的指针无疑是您所需要的

问题2:重新启动prolog解释器将清除您断言的事实。如果您想在一个会话中执行此操作,可能会派上用场(否则您需要分别收回每个事实)。

请参见/3see/3