List 序言:如何将2个谓词组合成1个列表 问题1
如何将天气信息(X,Y)与空气密度(X,Y)组合成一个列表。如果可能的话,我希望是这样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
:- 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