Prolog笔记

1. 加载脚本

?- ['E:/SWI-Prolog/test/friend.pl']. %true

2. 教程

https://riptutorial.com/zh-CN/prolog

3. 简单的计算求解:

?- X is 3*7. %X = 21

4. CLP(约束逻辑编程)库的使用

求解方程,CLP只能处理整数运算

?- use_module(library(clpfd)).
?- Y #= 3+4. %Y = 7.
?- 5 #= 4+W. %W = 1.

5. 单行注释

使用”%”

6. 知识库

事实 + 规则 = 知识库。
事实是我们对这个世界直接观察的结果。规则是关于现实世界的逻辑推论。

7. 合一(unification)

找出那些使规则匹配的值。
合一有时候不是唯一的,可以通过“;”来进行追问,有时候我们可能不满足于一个答案。

8. 列表/元组

程序 = 算法 + 数据结构。 列表是变长的容器,元组是定长的容器。

?- (1,2,3) = (1,2,3).               %元组
yes

?- [A,B,C] = [A,B,C]. %列表
yes

9. 内置谓词

length

获取列表的长度 ?- length([1,2,3],L). %L = 3.

append

可以用来合并两个列表

?- append([1],[2],What).      %What = [1, 2].
?- append([1],W,[1,2,3]). %W = [2, 3].

member

检查某一个值是否在一个列表内

?- member(1,[1,2]).      %true.
?- member(3,[1,2]). %false.


文章作者: Crazy Boy
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Crazy Boy !
赏

留言

想法、疑问或勘误,都可以写在这里。留言会公开显示。

正在准备留言区…

 上一篇
Markdown笔记 Markdown笔记
解决有序列表排序失败的问题,格式如下: 代码段使用Tab退格
2019-01-31
下一篇 
PHPExcel笔记 PHPExcel笔记
1. 设置字体和样式 2. 设置行高 3. 设置列宽 4. 单元格内容特定位置换行 5. PhpSpreadsheet日期格式问题 使用PhpSpreadsheet 进行导入处理时,如果单元格格式为:自定义的yyyy/m/d,导入后的数据格
2018-11-06