【问题标题】:Simple Prolog predicates in javascriptjavascript中的简单Prolog谓词
【发布时间】:2011-07-09 17:27:38
【问题描述】:

javascript 客户端代码中,是否有任何经过实战考验的方式来声明一些(简单的)prolog 谓词并断言一些事实?

我能找到的最好的是http://www.csse.monash.edu.au/~lloyd/tildeLogic/Prolog.toy/Ch/04.Techn1.shtml,但看起来它正在调用一些服务器端的“玩具”解释器。

【问题讨论】:

  • 你的申请是什么? JavaScript 无论如何都不是 Prolog,因此如果您描述 为什么 您想在 JavaScript 代码中声明 Prolog 谓词,这可能有助于获得答案。 (这甚至意味着什么,一方面?你需要这些谓词来做什么?)
  • 或许可以看看Prolog in JavascriptYeild Prolog。两者都没有实现 WAM,但对于您的目的可能已经足够了。

标签: javascript prolog logic


【解决方案1】:

Prolog 的好处是它有一个很好的回溯和统一引擎,内置于语言本身。 Javascript(就像大多数语言一样,顺便说一句)没有这个,所以没有办法“免费”获得 Prolog 风格的功能。

当然,您可以为您的 Prolog 子集编写一个解释器(或从某个地方将其作为库获取)并将您的谓词传递给它,编码为一些不错的 JS 数据结构。

但是,你为什么要这个呢?你只需要回溯吗?你需要复杂的统一吗?也许只写一个递归搜索函数就足够了?你的问题没有提供很多细节。

【讨论】:

  • 我需要的是陈述事实并有相当简单的推论,所以它确实是 prolog 的一个非常简洁的子集。
【解决方案2】:

我不是 Prolog 方面的专家,我认为其他答案提供了很好的建议,但这对于您正在做的事情可能是一个很好的库。它真的很小。

它确实为 Array 原型添加了逻辑,我可以想象重构它以使语法更清晰......但就个人而言,我有点喜欢它的简洁性。

代码包含 2 个示例。

http://tinlizzie.org/ometa/ometa-js-old/prolog-base.js

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多