2017-11-12 15 views
0

私はメソッドの中にある項目のリストを持っています。私はリストを呼び出すために別のメソッドを使用していますが、そのメソッドの中にリストを入力したくありません。これをどうすれば解決できますか?Prologでリストの結果を返す方法は?

foo(X)を使用してgo(X)のリストを変更したいが、機能しません。私はfoo(X)が[a、b、c、d、e]を返すことを知っています。変数と

foo([a,b,c,d,e]). 
hi:- read(X),member(X,foo(X)). 

K

+3

これらはプロローグ内のメソッドではなく、単に述語である。 – RoadRunner

答えて

2

最初の仲間リストは、member()でそれを使用する:Prologのルールで

hi:- read(X),foo(Y), member(X,Y). 

は値を返しません。 (変数がすでに値または定数に関連付けられているかどうかをチェックする)、または関連付ける(渡された変数がまだ関連付けられていない場合)

+0

返事をありがとう。このセクションでは苦労しました。 – kkbum

+0

@kkbum、リストを引数として 'hi'に渡すこともできます。 'hi(List): - read(X)、member(X、List).'を定義すると、' hi'を問い合わせる前にリストを問い合わせることができます: 'foo(List)、hi(List)'。どのように動作するかは、ユースケースによって異なります。 – lurker