摘要:
## 内容提要* 判断两个语句是否相等* 判断两个语句是否不等## 判断两个语句是否相等Prolog中有一个用于判断两个语句是否相等的重要谓词,即==/2。这个谓词可以用来判断两个语句是否相等,但是不能用于初始化变量,所以这一点是和谓词=/2有所区别的。让我们来看一些具体的例子: ?- a =... 阅读全文
摘要:
## 内容提要* 判断两个语句是否相等* 判断两个语句是否不等## 判断两个语句是否相等Prolog中有一个用于判断两个语句是否相等的重要谓词,即==/2。这个谓词可以用来判断两个语句是否相等,但是不能用于初始化变量,所以这一点是和谓词=/2有所区别的。让我们来看一些具体的例子: ?- a =... 阅读全文
摘要:
## 练习题 6.1 如果一个列表是由两段连续并且相同的元素段组成,那么我们称之为双重列表。比如,[a, b, c, a, b, c]是双重列表(因为它是由两个[a, b, c]构成),[foo, gubble, foo, gubble]也是双重列表。另一方面,[foo, gubble, foo... 阅读全文
摘要:
内容提要: append/3存在性能问题 列表反转原始版本 列表反转高效版本append/3性能问题 谓词append/3十分有用,而且了解如果使用它搭建应用也很重要。但是同样重要的是,我们应该知道它可能是低效的源头,并且不是任何使用都想要使用它。 为什么append/3可能是低效的源头?... 阅读全文
摘要:
内容提要:列表合并的定义列表合并的使用列表合并的定义我们将会定义一个很重要的谓词:append/3,其中所有的参数都是列表。从声明性角度去看,append(L1, L2, L3)的含义是列表L3是列表L1和列表L2的合并结果(合并意味着连接)。比如,如果我们查询: ?- append([a, b, ... 阅读全文
摘要:
练习题5.1Prolog会如何回答下面的问题? 1. X = 3*4. 2. X is 3*4. 3. 4 is X. 4. X = Y. 5. 3 is 1+2. 6. 3 is +(1,2). 7. 3 is X+2. 8. X is 1+2. 9. 1+2 is 1+2. 10. is(X, ... 阅读全文
摘要:
内容提要Prolog中如何进行整数的比较整数比较的实际应用Prolog中如何进行整数的比较一些Prolog的运算谓词可以实际地进行运算(即,不需要通过“is”协助),这些运算谓词都是进行整数比较的操作符。运算实例 Prolog表达式x = Y.x > y X > Y.这些操作... 阅读全文
摘要:
内容提要列表中的一些数字运算,累加器尾递归调用列表中的一些数字运算,累加器关于数字运算最为重要的应用,可能是获取一些数据结构体的一些有用事实,比如列表。例如,知道列表的长度是很有用的。我们将会给出一些使用列表和数字运算的例子。一个列表的长度是多少?这里有一个递归定义: 1. 空列表的长度为0. 2.... 阅读全文
摘要:
内容提要Prolog中的数字运算Porlog运算的本质Prolog中的数字运算Prolog语言本身提供了一些基础的运算符号,对整数进行一些操作(即类似...-3, -2, -1, 0, 1, 2, 3等)。多数Prolog的实现同时也提供了一些工具对实数进行操作(比如浮点数,1.53,6.35,等等... 阅读全文
摘要:
练习题4.1Prolog将会如何回答下面的查询? 1. [a, b, c, d] = [a, [b, c, d]]. 2. [a, b, c, d] = [a | [b, c, d]]. 3. [a, b, c, d] = [a, b, [c, d]]. 4. [a, b, c, d] = [a, ... 阅读全文
摘要:
内容提要通过递归对列表进行遍历,从而完成各种操作。member/2这个谓词逻辑通过递归遍历了列表,对列表头部有一些操作,然后递归地对列表尾部做另外一些相同的操作。通过递归遍历列表在Prolog是十分普遍的做法,事实上,我们必须要掌握这项技能。所以我们学习如下的例子。当我们使用列表的时候,我们经常会将... 阅读全文
|