记住Prolog中的目标

吉尔伽美什

Prolog是否有可能记住计算出的目标?

我的意思是说Prolog不应重新计算之前计算出的目标。

因此,例如,对我来说相同的计算是:

goal([first, one], he, she, var(cat, 5)).
goal([first, one], he, she, var(cat, 5)).

但不是

goal([first, one], he, she, var(cat, 6)).

因此,实际上,必须有可能统一这些目标。

许多Prolog系统提供隐式记录此类结果的功能。这称为制表请参阅Prolog系统的文档以了解如何启用它。

关于Prolog的一件好事是,您可以轻松地建立一个制表的更简单(但功能不那么强大)的变体,例如assertz/1用于存储和加载计算结果。

一个非常简单的实现可能类似于:

:-动态备忘录_ / 1。

memo(Goal)
    :-(memo_(Goal)-> true 
    ;目标,
         assertz(memo_(Goal))
    )。

买家当心...

当然,这不是成熟的制表所能给您的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章