是否有可能在生产规则中引用事实?
问题描述:
说我有一个看起来像这样的数据库:是否有可能在生产规则中引用事实?
regular_player('Xi').
regular_player('Doyle').
expert_player('Houdini').
expert_player('Gandhi').
% don't allow expert players to be paired together
start --> good_pair.
good_pair --> (player, expert) ; (expert, player) ; (player, player).
player --> ['Xi'] ; ['Doyle'].
expert --> ['Houdini'] ; ['Gandhi'].
是否有可能从生产规则引用的事实,以消除重复我这里。
答
您可以消除事实并改用player
和expert
规则。
或者,限定
player --> [P], { regular_player(P) }.
expert --> [E], { expert_player(E) }.
至于其做法是适当的是依赖于应用的。
这是一个微不足道的例子,在实际的代码中,我更喜欢原子在事实中,而不是生产规则,因为它们将在别处使用。 – paxos1977
@ paxos1977我同意。这将取决于应用哪种方法是理想的。 – lurker