2017-05-08 62 views

回答

0

這應該工作(順便說一個很好的問題):

variables(T,V):- 
    variables(T,[],V1), 
    sort(V1,V). 

variables(T,Acc,[T|V]):- 
    var(T), !, 
    variables(Acc,[],V). 
variables([],[],[]). 
variables([],Acc,V):- 
    variables(Acc,[],V). 
variables([H|T],Acc,V):- 
    append(T,Acc,NewAcc), 
    variables(H,NewAcc,V). 
variables(T,Acc,V):- 
    atom(T), 
    variables(Acc,[],V). 
variables(T,Acc,V):- 
    T=.. [_F|AL], 
    variables(AL,Acc,V). 

您所查詢的是

?- variables((H-5)* (H-5)+ (K- -2)* (K- -2)- (H-3)* (H-3)- (K-4)* (K-4)=0,VL). 
+1

您的查詢找到合適的解決方案,但隨後循環。 – false

+1

有一個內置於你的(OP的謂詞解釋)謂詞:'term_variables/2'。 – false