Home フォーラム AZ-Prologサポート掲示板 Term == Term. どちらを使うの? Term = Term.

  • このトピックには2件の返信、1人の参加者があり、最後に上間により7年、 6ヶ月前に更新されました。
2件の返信スレッドを表示中
  • 投稿者
    投稿
    • #58406
      上間
      ゲスト

      Termの比較は、どちらを使うのでしょうか?
      AZ-Prologの参考の規約はわかりませんが、規約に合っていますか?

      AZ-Prolog Version 9.24 (Linux/x64)
      Copyright (C) SOFNEC CO., LTD. 1987-2016/02/09
      | ?- aaa == aaa.
      yes
      | ?- aaa = aaa.
      yes
      | ?-

    • #58409
      稲葉
      ゲスト

      == /2 は項の比較で、= /2 はユニフィケーションです。
      グラウンド(変数が含まれない)項においては、どちらの真偽も同じ結果になりますが、
      変数が含まれる場合、真偽は異なる場合があります。

      ?- a(X) == a(1).
      no
      ?- a(X) = a(1).
      X = 1
      yes
      ?-a(X)==a(X).
      X = X_9
      yes
      ?- a(X)==a(Y).
      no
      ?-a(X)=a(Y).
      X = X_9
      Y = X_9
      yes

      なお、AZ-Prolog のトップレベルでの変数の束縛関係は
      変数名 = 変数セルアドレス
      となりますので、最後の例ではX,Yとも同じアドレスを指していることが分かります。
      他処理系では X = Y のような表現もあります。

      また、虚変数(”_” のみの変数)の場合、トップレベルでの表示では出現順に番号をつけて区別しています。
      ?- a(_,_) = a(aaa,bbb).
      _.3 = aaa
      _.4 = bbb
      yes

    • #58411
      上間
      ゲスト

      稲葉様
      解説ありがとうございました。

2件の返信スレッドを表示中
  • フォーラム「AZ-Prologサポート掲示板」には新規投稿および返信を追加できません。
上部へスクロール