标签: logtalk

在OO Prolog中通过多方法碰撞恒星物体?

我想知道如何将Prolog中的统一和OO结合起来.我想在术语对象上实现多方法调度.

如果没有术语对象和简单术语,我会执行以下操作,并且可以从多参数索引中获益:

collide_with(asteroid(_), asteroid(_)) :- /* case 1 */
collide_with(asteroid(_), spaceship(_,_)) :- /* case 2 */
collide_with(spaceship(_,_), asteroid(_)) :- /* case 3 */
collide_with(spaceship(_,_), spaceship(_,_)) :- /* case 4 */
Run Code Online (Sandbox Code Playgroud)

但上面只给出了一个确切的类型匹配.

如果我想要一个子类类型匹配,我该怎么办(可能有更多的太空船子类,如excelsior,galaxy等......在情况2,3和4中也应该匹配).

我还可以使用统一和索引吗?

再见

PS:这个例子来自这里没有Prolog解决方案:https:
//en.wikipedia.org/wiki/Multiple_dispatch

prolog logtalk

5
推荐指数
1
解决办法
169
查看次数

Logtalk和XPCE

可以使用XPCE和Logtalk开发应用程序,还是类系统在某种程度上不兼容?

swi-prolog logtalk xpce

2
推荐指数
1
解决办法
262
查看次数

定义用户无法查询的规则

如何定义用户无法查询的规则?我只希望程序本身通过另一个规则调用此规则.

例如:

rule1(): - rule2().

rule2(): - 1 <5.

?-规则1().

真正

?-rule2().

(我不知道答案是什么,我只是希望这个查询失败!)

prolog logtalk

1
推荐指数
1
解决办法
1667
查看次数

标签 统计

logtalk ×3

prolog ×2

swi-prolog ×1

xpce ×1