1

次のように作成されたリスト L があります。

atomic_list_concat(L,' ', 'This is a string').

L = ['This',is,a,string]

ここで、メンバー関数を使用して L 内のアトムを検索します。私は試した :

?- member(' is',L).
L = [' is'|_G268] .

?- member( is,L).
L = [is|_G268] .

ここで私が間違っているのは何ですか?

4

2 に答える 2

1

対話的に実行する Prolog 述部は、状態を保持しません。走るとき

atomic_list_concat(L,' ', 'This is a string').

インタプリタは の割り当てを表示しL、その値を忘れます。member/2次の行を実行するLと、自由変数の状態に戻ります。

L同じものを引き継がせたい場合は、次のように同じリクエスト内にとどまる必要があります。

:- atomic_list_concat(L,' ', 'This is a string'),
   member(is, L),
   writeln('membership is confirmed').

Lからの割り当てatomic_list_concatが に利用可能になりmember/2、メンバーシップをチェックできるようになりました。

于 2014-12-02T18:07:45.717 に答える