Home フォーラム AZ-Prologサポート掲示板 =.. call を使った例:エラーになります。

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

      ?- L =..[^,2,3],call(L).
      ERROR: ‘<meta-call>’/1: Undefined procedure: (^)/2
      ERROR: ^/2 can only appear as the 2nd argument of setof/3 and bagof/3
      Exception: (7) 2^3 ? creep
      ?-

      =====================================================
      実行できません。
      そういうものでしょうか?

    • #58457
      稲葉
      ゲスト

      指数の演算子 ^ は is/2 の第二引数または、=:= のいずれかまたは両方に現れた時に数値演算の
      評価がされ結果が出されます。

      | ?- 3^2 =:= 9.
      yes
      | ?- X is 3^2.
      X = 9
      yes

      Univ (=..)は単なる項の組み立てですから、表記の例 ?- L =..[^,2,3],call(L). は次に等しくエラーです。
      | ?- 2^3.
      Illegal Goal —- Backtrace
      (=..(^(2,3),[^,2,3]),call(^(2,3))) ?-

      なお、AZでは、system/pl/setof.pl で次のような ^/2 の定義がされており、これはsetofの補助述語です。
      _ ^ X :- X.

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