Prolog 如何扭转或构建对jason(agentspeak)的信念?

Prolog 如何扭转或构建对jason(agentspeak)的信念?,prolog,agent,multi-agent,Prolog,Agent,Multi Agent,我想做以下工作: 我有一个初始目标,以一个论点作为信念,我想把它颠倒过来,使信念的论点成为新的信念,论点成为信念的名字 大概是这样的: //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); .pri

我想做以下工作:

我有一个初始目标,以一个论点作为信念,我想把它颠倒过来,使信念的论点成为新的信念,论点成为信念的名字

大概是这样的:

//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
//project Test.mas2j中的代理询问器
!翻译(吠叫(狗))//我想有一个信念:狗(吠叫)

+!translate(T)像对待
T
一样构造术语:

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

Prolog中还有一个操作符 此处的工作方式略有不同(因为谓词注释不可用) 在Prolog中)是“
=…
”,用于将文本解构到列表中。结果 列表的格式为
[函数、参数列表、注释列表]
,例如:
p(b,c)[a1,a2]=。。[p、[b、c]、[a1、a2]


与此同时,我已经弄明白了。您的解决方案在语法上是不正确的,但非常接近。如果你不介意,我会编辑它,然后接受它。好!我尝试了以下代码,效果非常好!翻译(吠叫(狗))。+!翻译(T)