首页 > 学院 > 开发设计 > 正文

Prolog 备忘录

2019-11-08 19:42:05
字体:
来源:转载
供稿:网友

1.

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

2.

noun(x1, x2) <=> x2‘s noun is x2 such as father(Jim, Jam) <=> Jam’s fathwer is Jim

另外,一般地, type(x1, x2) <=> x1∈x2

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])
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表