4

このようなもの:

increment(X, X2 is X + 1).

それを行う方法はありますか?

4

3 に答える 3

2
no.

まあ、そのためのラッパー述語がない限りincrement/3、操作を実行してから、実数を呼び出すことincrement/3が有効であると見なされます。

foo(Arg1, Arg2, Arg3)編集:式を2番目の引数として渡すことができるように、のラッパーを作成するとします。ラッパーは次のようになります。

efoo(Arg1, Expr, Arg3):-
    Arg2 is Expr,
    foo(Arg1, Arg2, Arg3)

これを頻繁に実行したい場合は、その動作を抽象化することをお勧めします。

eval_call(Predicate, Expressions):-
    maplist(evaluate, Expression, Args),
    call(Predicate,Args).

evaluate(Expr, Arg):-
    Arg is Expr.
于 2012-11-12T00:14:04.377 に答える
1

必要なセマンティクスともう少し多くのsucc /2があります

?- succ(3,X).
X = 4.

?- succ(X,7).
X = 6.

質問のタイトルにはもっと一般的なものが必要なようです。@thanosQRがすでに指摘しているように、その構文にはいくつかの変更が必要です。

于 2012-11-12T08:19:12.267 に答える
0

いいえ、標準のイディオムはそれを個別に実行しています。例:

X2 is X + 1, increment(X,X2).
于 2012-11-12T08:59:24.593 に答える