アトム A にある値をアトム B に代入する必要がある述語の基本ケースがあります。これが可能かどうかはわかりませんが、これを行う方法はありますか?
私の述語は以下の通りです
montage(Expr,Out) :- atom(Expr), ....
atom(Expr)以降、いろいろ試してみましたがだめでした。
たとえば、Expr が 'a' で Out が 'a11' で、Expr がアトムの場合、Out にも 'a' が割り当てられます。
助けてくれてありがとう。
アトム A にある値をアトム B に代入する必要がある述語の基本ケースがあります。これが可能かどうかはわかりませんが、これを行う方法はありますか?
私の述語は以下の通りです
montage(Expr,Out) :- atom(Expr), ....
atom(Expr)以降、いろいろ試してみましたがだめでした。
たとえば、Expr が 'a' で Out が 'a11' で、Expr がアトムの場合、Out にも 'a' が割り当てられます。
助けてくれてありがとう。
Prolog では、割り当てるのではなく、統合します。これらは別個のアトムであるため、と統合a
することはできません。a11
?- a = a11.
false.
これは、これらのアトムとの統合によって既にバインドされている変数にも当てはまります。
?- X = a, Y = a11, X = Y.
false.
=
実際、節の両側が完全に固定されている (どこにも変数が含まれていない) 場合、統一は用語の等価性のチェックに還元されます。=
そのため、変数のバインドとパターン マッチングの両方に使用できます。
代入なしで動作するようにプログラム ロジックを再考する必要があります。