DSP

Prolog 备忘录

2019-07-13 12:36发布

1.

大写或下划线开头的词暗示变量,小写开头的词暗示原子量;查询时必须使用大写或下划线开头的词。

2.

noun(x1, x2) <=> x2‘s noun is x2
such as father(Jim, Jam) <=> Jam’s fathwer is Jim 另外,一般地,
type(x1, x2) <=> x1x2

3.

prolog 文件后缀名为 .pl 或者 .pro
最初的后缀名为.pl, 可是尴尬地同perl的后缀名冲突了,个人建议还是用.pro

4.

递归时使用尾递归, 优化可以使得栈空间不变

5. 不一样的运算符

5.1 Name symbol 小于等于 =< (诡异) 大于等于 >= (正常) 5.2 ->
条件语句 (Head1 < X2 -> X is Head1 /* if */ ; X is X2). /* else */

6. 模块定义与导入

不同实现可能略有不同,对于SWI-Prolog,
定义模块: 1. 文件第一行 `:- module(list, [ reverse/2, min/2 ]).`, 关键是`:-`不能漏掉 导入模块: 1. :- use_module('./soduku4step.pro', [ soduku/2 as soduku4step ]). 2. 默认全部导入 3. :- use_module(library(lists)). %导入标准库 在TopLevel交互时不需要:-

7. 推断的作用

1. 查询 reverse([1, 2, 3], X) % X 是 [3, 2, 1] 2. 判断(通过返回的bool) all_different([1, 2, 3])

热门文章