JavaScript中的Prolog系统

17
JavaScript似乎越来越流行作为其他编程语言的实现语言。文章轻量级(C)LP到JavaScript的编译。ICLP 2012引起了我的注意。
网络上有很多用JavaScript编写的Prolog系统的概念验证原型。
目前有哪些活跃维护的、最好符合ISO标准的JavaScript编写的Prolog系统?

2
这个问题似乎是一项调查,因此不适合在SO上发表。 - Felix Kling
@FelixKling:其他编程语言也有类似的问题:比如https://dev59.com/C3I-5IYBdhLWcg3whIqk#6591847 - false
5
这是在2009年的事情...当时规则和现在不一样了。 - Felix Kling
3
“汇编JS”(Asm.js)可以帮助提升此主题的原始性能。 - CapelliC
1个回答

14
我所知道的JavaScript中的唯一Prolog是YieldProlog,但我没有进行过广泛尝试,只是使用了QueryEditor中可用的代码。
我希望使用yield结构可以轻量级(我在C#中广泛使用这种结构,并发现它与lambda配对非常强大)。
但是当我(概括地)检查源代码时,我发现它非常复杂,尽管有假设。
编辑
我最近发现了这些贡献,它们似乎非常有趣:proscriptproscript2
编辑
一个新的实现可用: Tau Prolog,由SWI邮件列表上的Jan引起我的注意。
编辑

有一件新事物,hhprolog,这是一个纯粹的Prolog引擎,基于Paul Tarau提供的代码和文档,并由我将其移植到Javascript。因此,它可在浏览器和NodeJS中使用。

该项目仍处于初步阶段,主要需要引导解释器:现在必须使用安装了SWI-Prolog且正确配置(需要JPL)的情况下将Prolog(预)编译为(新颖的)虚拟机。

为了实现这种引导,我可能需要实现否定来重用Paul的接口,或者更好的尝试在纯范式中实现某些东西。特别地,只有无限整数算术(再次感谢Paul Tarau,有一些Python代码可用-我将尝试懒惰地将其移植到Javascript中)。


你能解释一下 "Yield Prolog 允许你直接在 Python、C# [1] 或 Javascript 中嵌入 Prolog 程序" 的意思吗?这是三种语言吗?还是什么? - false
2
我认为它“编译”子句:文档页面非常详细... - CapelliC
1
Yield Prolog似乎与最新版本的Firefox兼容,但不兼容Google Chrome。幸运的是,已经有几个其他的逻辑编程系统在JavaScript中实现了。 - Anderson Green

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接