人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Prologを初めて使っているのですが、意図する動作を作れなくて困っています。

ある数式がリストに含まれているか否かを調べたいのですが、組み込みのmemberだと単一化が起こってしまします。
リストの中身が変わると困るので、単一化されないほうが望ましいのですが、実装方法がわかりません。

A=[B/c],member(b/c,A).

組み込みmemberだと、

A = [b/c],
B = b .

となります。望む動作としては

A = [B/c].

つまり、「成功しても失敗してもリストの中身は変わらず、リストに含まれていれば成功する」、
このように動作するmemberの作り方をご存じの方がいらっしゃいましたら教えてください。

環境は以下のとおりです。
window,swi-prolog 5.6.59

●質問者: tomity
●カテゴリ:コンピュータ
✍キーワード:Prolog いるか リスト 意図 環境
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● wd0
●100ポイント ベストアンサー

一般に、テストだけ行って具体化はしてほしくない場合は、二重否定をつかうのが定石です。

member(Elem, List)

のかわりに

\+ (\+ member(Elem, List))

でどうでしょう?

http://gollem.science.uva.nl/SWI-Prolog/Manual/control.html

◎質問者からの返答

なるほど!

これで、望む動作が実装できそうです

どうもありがとうございました

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ