2017-03-22 103 views
1

使用我有這樣的功能:序言,如何讀值親功能在其他功能

func1(X). 

後執行FUNC1(一)返回值X = N。 這是一個第二功能:

other_func(z). 

執行other_func(Z)後,它返回truefalse

而我需要使用func1(a)的值來獲得另一個函數的返回值。

例子:

final_func(X) :- func1(X) = R , other_func(R). 

但始終返回false。

+1

*執行完'func1(a)'返回值'X = n' *。實際上這是不可能的。 Prolog沒有返回值的函數。它具有成功或失敗的謂詞。所以當你說'func1(a)'返回'X = n'時,這是沒有意義的。也許你的意思是'func1(X)'用'X = n'成功了嗎?目前尚不清楚。還要注意,沒有參數的小寫字母表示* atoms *(它們是常量),而變量必須以大寫字母或下劃線開頭。 – lurker

+1

代碼中的'func1(X)= R'行不符合您的想法。 'func1(X)'正如我所提到的那樣不返回值。 Prolog中的func1(X)= R'試圖通過變量'X'和'R'的實例來統一術語'func1(X)'和'R'。再一次,目前還不清楚你試圖達到什麼目標。 – lurker

回答

1

我解決了與其他解決方案,

final_func(C) :- (func1(X,m) -> other_func(m) ; other_func(n)). 

我的問題是解決了,但是這是不正確的解決方案,因爲它僅適用於一個情況。