只是想知道是否可以在浏览器中运行prolog脚本?我在大学学习过,我喜欢把它添加到我的在线作品集中?
答案 0 :(得分:7)
是的,YieldProlog是一个随时可用的转发器'从Prolog的一个很好的子集到JavaScript。
修改的
现在有一个更好的替代方案,符合ISO标准:Tau Prolog
修改的
预览hhprolog,我是Prof.Tarau Hitchhicker Prolog虚拟机的Javascript端口。
点击[运行代码段]以Peano表示法计算2 + 2,即纯Prolog的这个片段
add(0,X,X).
add(s(X),Y,s(Z)):-add(X,Y,Z).
goal(R):-add(s(s(0)),s(s(0)),R).
<script src="https://cdn.jsdelivr.net/gh/CapelliC/hitchhicker-prolog@8424f251246b5f45d5a7ee7046e3e32d29b8282c/hhprolog-es6.js"></script>
<script>
const add = `
add 0 X X .
add _0 Y _1 and
_0 holds s X and
_1 holds s Z
if
add X Y Z .
goal R
if
add _0 _1 R and
_0 holds s _2 and
_2 holds s 0 and
_1 holds s _3 and
_3 holds s 0 .
`
const prog = new Prog(add)
//prog.ppCode()
const t0 = Date.now()
prog.run(true)
console.log('elapsed secs', (Date.now() - t0) / 1000)
</script>
&#13;
答案 1 :(得分:3)
我真的不知道你想用Prolog在线做什么,但here有几个在线&#34; IDE&#34;和几种语言的编译器(包括Prolog)所以你可以在那里执行你的prolog脚本
如果你想在浏览器中运行prolog,恐怕我不知道如何轻松地做到这一点
答案 2 :(得分:2)
不确定sw and和/或pengines是否有帮助? http://swish.swi-prolog.org/
答案 3 :(得分:0)
我运行了以下交叉编译的系统。它
实现了 ISO 核心标准的一个子集,并且具有
一个外部函数接口和一个垃圾收集器。
Dogelog 通过 Prolog 玩井字游戏
http://www.dogelog.ch/play.html
术语的指令流受阿尔布费拉的启发
下面编译。但是我们没有复制所有的尾递归
然而,又回到了“呼叫”和“重做”蹦床:
便携式 Prolog 编译器
会议:逻辑编程研讨会 - 葡萄牙阿尔布费拉
William Clocksin - 1983 年 1 月
https://www.researchgate.net/publication/273888197
第一次测试表明它是大约。比
快10倍
TauProlog 也更容易使用,因为它实现了一个
迭代器 API。所以未来可能会得到更多关注。