2017-03-22 6 views
1

での使用のために価値のプロ機能を読み取るためにどのように私はこの機能を持っています。 これは第二の機能である:実行other_func(Z)後Prologは、他の機能

other_func(z). 

、それはtrue又はfalseを返します。

他の関数で戻り値を取得するには、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)). 

私の問題が解決され、それが唯一のケースのために働くので、これは正しい解決策ではありません。

関連する問題