2

私は次のことをしたいと思います:

私は、信念としての議論を伴う最初の目標を持っていますが、それを逆転させて、信念の議論が新しい信念になり、議論が信念名になるようにしたいのです。

このようなもの:

//Agent asker in project Test.mas2j
!translate(barks(dog)). //I would like to have the belief: dog(barks)
+!translate(T)<-
    T =.. [A,[B],C];
    .print("functor: ",A);
    .print("argument: ",B);
    //.print("source: ",C);
    +B(A);//<- I want something like this, but it gives a syntax error.
    +B. //<-this works, but it doesn't give the argument to it

だから、私の質問は、このように信念を構築するのは嫌なことですか?

4

1 に答える 1

3

の場合と同じように項を構成しますT

...
X =.. [B,[A]]; // constructs the belief
+X; // adds the belief to the current belief base
...

Jason を使用した AgentSpeak でのマルチエージェント システムのプログラミングという本から:

Prolog で使用できる演算子の 1 つは、(Prolog では使用できない述語注釈のため) ここでは少し異なる動作をする '<code>=..' で、リテラルをリストに分解するために使用されます。結果のリストは、次のような形式[functor, list of arguments, list of annotations]に なりますp(b,c)[a1,a2] =.. [p, [b,c], [a1,a2]]

于 2012-05-04T08:41:39.590 に答える