PROLOG基础
通过;/2谓词,可以改写为: loop:-write(Type end to end),read(Word), write(Input was ),write(Word),nl, (Word=end;loop). fail谓词,fail谓词求值总是fail,因此强迫回溯开始,例如下面的例子: dog(fido). dog(fred). dog(jonathan). all_dogs:- dog(X),write(X),write( is a dog),nl,fail. all_dogs. cut谓词:用于中止回溯,也可用!号表示。例如下面的例子: data(one). data(two). data(three). test(X) :- data(X). % test(X) :- data(X), !. test(last clause). ?- test(X), write(X), nl, fail. 六、改变Prolog数据库 加入和删除语句 Prolog提供了BIPs用于删除或者增加数据库中的语句。 如果一个谓词可以被assertz, retract等BIPs修改,那么它必须声明是动态的,否则Prolog将报错。动态声明必须放在谓词声明的前面,最好放在整个程序的前面,声明方式如下: dynamic(mypred/3). 这就将mypred/3谓词声明为动态,可用BIPs进行增删了。 增加语句,通过谓词assertz/1和asserta/1,两者的区别在于:前者将语句加入相应谓词的后面,而后者将语句加入相应谓词的开始处。例如: ?-assertz(dog(fido)). ?-assertz((go:-write(hello world),nl)). ?-assertz(dog(X)). ?-assertz((go(X):-write(hello ),write(X),nl)). 删除语句 删除语句,也有两个谓词:retract/1和retractall/1, 区别:参数是一条语句;后者仅接受语句的head部分,用于删除所有的满足该head的语句。 例如,假设数据库中有如下语句: dog(jim). dog(fido). dog(X). ?-retract(dog(fido)). 删除数据库中的第2条语句 ?-retract(dog(X)). 却是删除dog(jim).因为这是第一条与(dog(X)匹配的语句,而最后的dog(X).反而得到保留。 ?retractall(mypred(_,_,_)).删除所有的mypred/3谓词语句。 retractall(parent(john,Y)).删除所有的第一个参数的john的parent/2语句。 retractall(mypred).删除所有的mypred/0谓词。 七、列表处理 1、list格式 [逗号隔开的term] 例如: [a,b,c,d],空列表[]。 1)member,判断元素是否在列表中 ?- member(a,[a,b,c]). yes ?- member(mypred(a,b,c),[q,r,s,mypred(a,b,c),w]). yes 2)length谓词,确定列表长度,第2个参数如果是变量,将变量绑定为列表参数,如果是数字,就将该数字与长度比较,相等则success,否则fail。 ?- length([a,b,c,d],X). X = 4 ?- length([a,b,c],3). yes 3)reverse谓词,如果两个变量都是list,就判断是否互相倒序,如果一个是变量,一个是list,就将变量绑定为list的倒序: ?- reverse([1,2,3,4],L). L = [4,3,2,1] 4)append谓词,三个参数,如果前两个是list,第三个为变量,那么将变量绑定为两个list合并连接的列表: ?- append([1,2,3,4],[5,6,7,8,9],L). L = [1,2,3,4,5,6,7,8,9] 如果前两个参数包括变量,第三个是列表,那么将回溯寻找所有可能的列表组合: ?- append(L1,L2,[1,2,3,4,5]). L1 = [] , L2 = [1,2,3,4,5] ; L1 = [1] , L2 = [2,3,4,5] ; 。。。。 5) findall/3谓词: 假设我们已经如下事实: person(john,smith,45,london). person(mary,jones,28,edinburgh). person(michael,wilson,62,bristol). person(mark,smith,37,car
您可能关注的文档
- PPT背景超大集合20M.ppt
- ProE课程设计说明书(夹紧座).docx
- Protel课程设计-共射极三级晶体管放大器设计.docx
- PRS-778S-5BNW南网调试大纲.doc
- PROE5.0基础.docx
- PRTG NETWORK MONITOR测试.docx
- PRS-785A1-V1.01-01系统测试方案.doc
- PS 第一章 基础教程.ppt
- PS 刀片系统AIX服务请求代码.doc
- PS 图像保存.doc
- 2025广东广州市天河区拟招聘英语实习老师1人备考题库附答案.docx
- 2025广东广州市天河区城市管理第二保洁所招聘编外工作人员4人笔试备考试卷附答案解析.docx
- 2025广东广州市越秀区流花街道办事处招聘综合事务中心辅助人员1人笔试历年题库附答案解析.docx
- 2025广东广州市花都区新雅街清初级中学招聘临聘教师1人备考历年题库带答案解析.docx
- 2025广东广州市天河区城市管理第二保洁所招聘编外工作人员4人笔试备考试卷带答案解析.docx
- 江苏省盐城市东台市三仓镇区中学2026届八年级数学第一学期期末教学质量检测试题含解析.doc
- 2025广东广州市天河区城市管理第二保洁所招聘编外工作人员4人备考题库带答案解析.docx
- 江苏省盐城市亭湖区2026届数学八上期末考试试题含解析.doc
- 安徽省蚌埠市淮上区2026届数学八年级第一学期期末达标检测模拟试题含解析.doc
- 2025广东广湛城旅游轮有限公司招聘备考历年题库附答案解析.docx
最近下载
- 分析palantir对象模型shreyas phpapp01.pptx VIP
- 班子成员之间的相互批评意见.docx VIP
- 广发宏观分析报告:居民活动收支表的构建、分析与运用.pdf VIP
- Palantir公司调研报告.pptx VIP
- 汉川XH715D立式加工中心机使用说明书.pdf VIP
- 数学丨重庆市2026届高三上学期1月康德高考模拟调研卷(一)试卷及答案.pdf VIP
- 贵州省贵阳市普通中学2022-2023学年高三上学期期末语文(解析版).docx VIP
- 化工老旧装置淘汰退出和更新改造工作方案.docx VIP
- 培智六年级生活数学期末试卷ABC卷.doc VIP
- 港口机械钢结构制造规范.pdf VIP
原创力文档

文档评论(0)