随笔分类 - ProLog及其它
对于ProLog语言的学习记录
摘要:【append/3 连接两个List】 我们将定义一个重要的谓词append / 3,其参数均为列表 如果列表L3是将列表L1和L2串联在一起的结果,则append(L1,L2,L3)为true ?- append([a,b,c,d],[3,4,5],[a,b,c,d,3,4,5]). yes ?-
阅读全文
摘要:【概述】 在ProLog中,我们用“is”代表“=”。如下图所示 : 同时,我们也可以在问询中提问有关算术结果的内容,比如: 我们可以通过定义来添加一种算法(有点其它语言方法函数内味了),比如 addThreeAndDouble(X, Y):-Y is (X+3) * 2. 那么我们在接下来的问询中
阅读全文
摘要:【简介】 列表是Prolog编程中常用的一种重要的递归数据结构 列表是一个有限的元素序列 实例: 所有Prolog术语都可以是列表的元素,一个非空的List应该含有两个元素:头元素(Head)和尾元素(tail) 头是指List中的第一个元素,除去头都是尾 “列表的尾部也总是一个列表 / The t
阅读全文
摘要:【ProLog中的递归】 如果递归中的一个或多个规则引用谓词本身,则对该谓词使用“递归”定义 在使用时,这往往像一条食物链或者族谱的构成(A的爸爸的爸爸,即A的爷爷,是A的长辈) 比如下面这个例子: 在这个例子中,我们只是设计了两级的后代判断,也就是child的child,进行三级的判断就会报出No
阅读全文
摘要:【术语统一 terms unify】 两者统一,只需满足下面两条件之一 1.原本就是相同的 2.包含变量,这些变量可以用术语统一实例化,从而得到相等的术语 mia和mia是统一的,42和42是统一的,woman(mia)和woman(mia)是统一的 woman(mia)和woman(jody)不是
阅读全文
摘要:【概述】 Prolog的语法与其它常用语言(如C,JAVA等)不同,它更接近于自然语言。 【实例】 当我想表示**“Mia是以女人”这个事实**(之后会提到事实这个概念)的时候,我可以这么写 woman(mia). 这个格式代表这一个事实,a(b). b是a 事实上命名没什么要求,只要你自己记得就好
阅读全文

浙公网安备 33010602011771号