用語に数値を直接追加することは可能ですか?
つまり、次のようなことを簡単に行うことができます。
?- A = 1 + 2, B = 3, C = A + B.
C = 1+2+3
C = A + B
しかし、 「C = 1+23」を取得するために「+」の代わりに何かを指定する方法 (演算子?) はありますか?
私は何か奇妙なことを求めている気がするので、ここに文脈があります。数字のリストがあり、数字の間に「+」、「-」、または何も入れないことで取得できるすべての式を生成したいと考えています。
プラスとマイナスは簡単な部分です。
possible([X], X) :- !.
possible([A, B | Rest], E) :-
( H = A + B ; H = A - B ),
possible([H | Rest], E).
?- possible([1, 2, 3], E).
E = 1+2+3 ?;
E = 1+2-3 ?;
E = 1-2+3 ?;
E = 1-2-3
yes
しかし、「E = 12+3」、「E = 1+23」、「E = 123」も取得したいと考えています。それを行う簡単な方法はありますか?
更新: ソリューションは移植可能であるか、少なくとも B-Prolog で動作する必要があります。