Seaman.h.zhang

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2015年8月10日

摘要: ## 从文件中读取内容---本节将学习如何从文件中读取内容。如果文件中的内容是以Prolog的语句形式存在的,那么在Prolog中读取这样的文件内容是很容易的。比如文件houses.txt的内容如下: gryffindor. hufflepuff. ravenclaw. sl... 阅读全文
posted @ 2015-08-10 13:33 seaman.kingfall 阅读(773) 评论(0) 推荐(1) 编辑

2015年8月8日

摘要: 学习到这个阶段,你可能已经使用append/3和member/2写了很多程序。你可能每次都需要将它们的实现代码拷贝到使用它们的程序文件中。而且,经过几次这样做之后,你就会感觉每次不停的拷贝是非常重复和麻烦的事情。如果你可以在一个文件中定义它们,然后在需要的地方使用,这将会是令人愉快的,而且也是更加合... 阅读全文
posted @ 2015-08-08 08:47 seaman.kingfall 阅读(834) 评论(0) 推荐(0) 编辑

2015年8月6日

摘要: ## 解决方案的收集问题在Prolog的查询中,可能存在会有很多解决方案的情况。比如,假设有如下的知识库: child(martha, charlotte). child(charlotte, caroline). child(caroline, laura). child(... 阅读全文
posted @ 2015-08-06 16:15 seaman.kingfall 阅读(1499) 评论(0) 推荐(1) 编辑

摘要: Prolog中有四个知识库相关的操作命令:assert,retract,asserta,assertz。让我们学习它们是如何使用的。假设从一个空白的知识库开始,如果输入命令: ?- listing.Prolog会简单地回复true,列表是空白的。假设我们输入这个命令: ?- assert... 阅读全文
posted @ 2015-08-06 13:16 seaman.kingfall 阅读(845) 评论(0) 推荐(0) 编辑

2015年8月5日

摘要: Prolog一个很有用的特征就是可以让使用者概括地描述事物,对其进行抽象。比如我们如果想描述Vincent喜欢汉堡,可以这么写: enjoys(vincent, X) :- burger(X).但是在现实中总会存在例外。也许Vincent不喜欢Big Kahuna汉堡。即,正确的规则是:Vin... 阅读全文
posted @ 2015-08-05 13:29 seaman.kingfall 阅读(897) 评论(0) 推荐(0) 编辑

2015年8月3日

摘要: ## 中断在Prolog的运用上一节我们学习了中断是什么。但是在实际编程时如何使用,为什么这个机制会有作用呢?第一个例子,让我们定义一个没有中断的谓词max/3,其中所有的参数都是整数,并且当第三个参数为前两个参数中较大的一个时,谓词为真。比如,查询: ?- max(2, 3, 3). ... 阅读全文
posted @ 2015-08-03 12:57 seaman.kingfall 阅读(568) 评论(0) 推荐(0) 编辑

2015年8月1日

摘要: ## 中断自动回溯是Prolog中很有代表性的一个特征。但是回溯可能会导致低效。有时Prolog会浪费时间在一些没有结果的可能性搜索上。如果在回溯行为方面有一些控制机制的话,会是一件比较有意义的事情,但是直到现在为止我们看到只有两种相当初级的方式可以用于这个目的:交换规则顺序,和交换目标顺序。其实有... 阅读全文
posted @ 2015-08-01 09:08 seaman.kingfall 阅读(1056) 评论(0) 推荐(0) 编辑

2015年7月29日

摘要: ##内容提要* 操作符的属性* 自定义操作符正如我们之前看到的,在一些特定的情况下(比如,当进行数字计算时),Prolog允许我们书写比内部表示更加友好的操作符语法。事实上,如我们将要学习到的,Prolog甚至允许我们自定义操作符。这本章中,我们将会学习操作符的属性,及其如何自定义操作符。## 操作... 阅读全文
posted @ 2015-07-29 10:38 seaman.kingfall 阅读(767) 评论(0) 推荐(0) 编辑

摘要: ##内容提要* 语句的类型检查* 语句的结构检查* 字符串在本节中,我们将学习一些内置谓词,这些谓词可以对语句进行检查。首先,我们将会看到的谓词会测试其参数的语句是否为某种特定的类型(比如,是否是原子或者数字)。接下来,会介绍一些可以揭示复杂语句结构的谓词。---## 语句的类型检查回忆一下在第一章... 阅读全文
posted @ 2015-07-29 09:46 seaman.kingfall 阅读(830) 评论(0) 推荐(0) 编辑

2015年7月25日

摘要: ##内容提要* 算术相关的语句* 列表语句有时候语句会看上去非常地奇怪,但是Prolog内部能够正确地进行处理。比如,当我们比较 a 和 'a'时,作为人我们看到了两个不同的字符符号,但是Prolog会认为它们是同一个东西。而且事实上,Prolog还会认为其他很多情况下,两个字符串是相同的语句。为什... 阅读全文
posted @ 2015-07-25 10:01 seaman.kingfall 阅读(621) 评论(0) 推荐(0) 编辑