76得票10回答
'if' in prolog?

在Prolog中有一种方法可以使用if语句,例如如果一个变量为0,则执行某些操作(向终端输出文本)。不需要else,但我找不到任何if的文档。

57得票4回答
重新排列变量名称

如何以符合标准的方式写出 avs_term_rearranged(AVs, T, AVsR),其中 AVs 和 T 已知,使得 AVsR 是 AVs 的排列,元素按照它们在 T 中从左到右出现的顺序进行排列。 AVs 是一个由形如 A = V 的元素组成的列表,其中 A 是指代变量名(例如 ...

57得票2回答
Prolog中单引号和双引号有什么区别?

我刚接触Prolog,注意到单引号和双引号的行为不同,但是很好奇为什么会这样。具体来说,在加载文件时,?- ['test1.pl'].可以正常工作,而?- ["test1.pl"].则不能。

38得票5回答
统一化与STO检测

在ISO Prolog中,一致性仅针对那些不受出现检查限制的情况(NSTO)进行定义。其背后的思想是覆盖程序中大多数使用的一致性情况,并且所有Prolog系统都实际支持这些情况。更具体地,ISO/IEC 13211-1:1995如下所述: 7.3.3 受出现检查(STO)和不受出现检查(NS...

35得票2回答
Prolog:源文件中的子句未组合在一起

我有这段代码:% Family tree female(pen). male(tom). male(bob). female(liz). female(pat). female(ann). male(jim). parent(pam, bob). parent(tom, bob). pare...

33得票8回答
如何在ISO Prolog中定义(和命名)相应的安全术语比较谓词?

标准术语顺序(ISO/IEC 13211-1 7.2 术语顺序)适用于所有术语,包括变量。虽然这样做有好处——可以考虑实现setof/3,但这会使得8.4术语比较中许多本来干净、逻辑清晰的内置函数使用变得混乱不堪,到处都是命令式结构的影响(简称为imps)。8.4术语比较功能包括: 8.4 ...

26得票3回答
Prolog - 列表的非常规 cons 语法

我在Lee Naish的论文Higher-order logic programming in Prolog中遇到了一个陌生的Prolog语法。这是论文中的第一个代码示例: % insertion sort (simple version) isort([], []). isort(A.As...

21得票2回答
在Prolog中进行更安全类型的测试

ISO-Prolog(ISO/IEC 13211-1:1995,包括Cor.1:2007,Cor.2:2012)提供了用于测试术语类型的以下内置谓词: 8.3 类型测试 1 var/1. 2 atom/1. 3 integer/1. 4 float/1. 5 atomic/1. 6 co...

18得票4回答
两个变量列表的相等性

如何定义一个元逻辑谓词,使用当前ISO标准(ISO / IEC 13211-1:1995,包括Cor.2)的内置函数,测试(因此仅成功或失败)两个唯一变量列表是否完全相同。 换句话说,如果一个唯一变量列表是另一个列表的排列,则该谓词应该成功。类比于library(ordsets),我们将这个...

17得票1回答
JavaScript中的Prolog系统

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