问题标签 [prolog]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
prolog - Prolog 上很好的初学者资料
我正在寻找关于 Prolog 的优秀初学者材料,包括在线和印刷版。我不仅对“学习语言”感兴趣,而且对背景和科学信息感兴趣。
statistics - 逻辑语言 - Prolog 或 Lisp/Smalltalk 或其他?
所以,我正在编写某种统计程序(实际上我正在将它重新设计为更优雅的东西)并且我认为我应该使用为这种东西创建的语言(处理大量的统计数据,它们之间的连接和某种遗传/神经编程)。
说实话,我只是想要一个深入研究 lisp/smalltalk 的借口(smalltalk/lisp/clojure 不一样吗?-像 python 和 ruby 一样?-semantics-wise)但我也想要一种易于理解的语言其他喜欢 BASIC 语言的人(这就是我没有选择 LISP 的原因 - 还 :D)。
我还检查了 Prolog,它似乎是一种非常酷的语言(易于处理数据之间的关系并且比 Lisp 更容易),但我想听听您的想法。
谢谢
编辑:我总是把普通的 lisp 和 Smalltalk 混为一谈。很抱歉把这两个语言放在一起。另外,我所说的“其他喜欢 BASIC 语言的人”的意思是,我不喜欢像 lisp 这样具有语义的语言(对于没有 CS 背景的人),我发现 Prolog 更直观一些(但那是我的我只是把他们俩都弄乱了一点之后的意见)。
prolog - 与自变量的析取应该返回什么?
以下内容会导致什么结果:
我手边没有 Prolog 编译器,所以我无法测试如果你再问会发生什么p(X,Y)
。代码甚至可以编译吗?会p
返回两个答案,每个答案都有一个未绑定的变量吗?
在现实世界的场景中,我认为p(X,Y)
这没有多大意义(人们可能更愿意p(X)
遵循其中一个q(X)
or r(X)
),但我对这里实际发生的事情以及外围情况感兴趣,在这种退化的情况下应该发生什么.
string - 规范化 Prolog 原子中的空格字符
在 Prolog 原子中规范化空白字符(空格、换行符、制表符)的最佳方法是什么,例如在 SWI-Prolog 中。即我想有一个规则:
这样Atom2
- 任何空白字符序列都变成了一个空格
- 以非空格开头
- 以非空格结尾
prolog - 在 Prolog 中将列表转换为术语
就效率和尽可能使用现有的内置谓词而言,将 Prolog 列表转换为 Prolog 术语(不是列表)的最佳方法是什么?
接口和使用示例如下。
即给定的列表(实际上是一个嵌套的术语)被展平为具有给定名称的术语。
我并不是说这样做有意义。(但如果您认为确实如此,请在您的回答中提供一个用例。)
programming-languages - 为什么逻辑编程没有流行起来?
随着时间的推移,函数式编程似乎对其他编程语言的影响越来越大。我们在我的 AI 课程中开始使用 Prolog,似乎有一些东西可以让非 AI 领域的编程变得更容易。我的问题是:为什么逻辑编程没有以同样的方式流行起来?
在本主题中,似乎达成了普遍共识,即逻辑编程是有用的,但必须证明这一点。它没有被视为有用的原因吗?
更新:也许我应该更清楚一点。我并不是真的在问 Prolog。我明白为什么在大多数实际应用程序中选择 Prolog 不是一个好主意。
举一个我正在谈论的更多示例,请考虑 Python 中的列表推导/映射/过滤器。这些显然受到函数式语言的影响。为什么像 Python 这样的语言还没有像函数式语言那样从逻辑编程语言中吸取这些东西?
prolog - 如何从 .plrc 更改 prolog 中的 prompt_alternatives_on 标志?
我可以prompt_alternatives_on
在 REPL 中更改标志。
- 但是如何在 .plrc 中更改此标志?
然后我得到
目标:不要得到“更多?” 始终为所有答案提供文本。通过更改标志。
c++ - Prolog ECLiPSe - 如何实现产量方法?
我正在使用 ECLiPSe 编程逻辑系统。
我想实现将值从 prolog 传递到 C/C++ 的 yield 方法。有没有人实施过?
还有其他传递值的方法吗?
mapping - 在 Prolog 中输入
我目前正在开发一个递归 Prolog 程序,将路线链接在一起,以创建伯明翰地区的基本GPS。目前我可以得到这样的输出:
输入
输出
我想做的是让我的程序提供某种接口,所以如果我要输入以下内容:
它会为我提供:
Prolog 是一种强大的语言,所以我认为这很容易实现,但是我取出的许多书似乎都跳过了这一部分。据我所知,我必须使用类似于 write() 和 read() 的东西,尽管我不知道细节。
这里有人可以提供一些基本示例或更多信息链接的 Prolog 新手吗?
编辑:很多这些答案似乎非常复杂,解决方案应该只有大约 5-10 行代码。读入一个值不是问题,因为我可以按照以下方式做一些事情:
如果可以使用 write() 写出输出,我会更喜欢它,以便可以使用新行 (nl),以便它像上面的输出一样显示。
如果这是我的输入,那么我将如何安排顶级 routeplan() 来处理这些输入?另外,如果我要为这些车站添加线路作为额外参数,那么这将如何实现?所有链接都在文件开头定义,如下所示:
因此,有了这些信息,能够像这样读取该行会很好。
prolog - Prolog 家谱
我做到了,但没有显示答案当我问起兄弟姐妹,叔叔阿姨时
这是我写的,有什么问题吗?
还有一件事,我如何优化兄弟的规则,使 X 不是自己的兄弟。