На самом деле, у Джейсона нет перформатива «tellRule», определенного по умолчанию. Фактически, упомянутое demo учит, как добавить перформатив KQML. Итак, чтобы ваш код работал, вы должны сначала создать «tellRule», сделав так:
.send(self, tellHow, {+!kqml_received(A,tellRule,Rules,_) <-
.print("Received rule(s) ",Rules, " from ",A);
for ( .member(R, Rules) )
{+R[source(A)];}
.relevant_rules(_,LR);
.print("Rules: ",LR)}).
После этого вы можете запустить команду:
.send(self,tellRule, [{a :- b & c}]).
Кстати, эту же идею можно использовать для создания чего-то вроде "untellRule":
.send(self, tellHow, {+!kqml_received(A,untellRule,Rules,_) <-
.print("Removing rule(s) ",Rules, " from ",A);
for ( .member(R, Rules) )
{-R}}).
.send(self,untellRule,[{a :- b & c}]).