Prolog 的类型

2024 年 8 月 29 日 | 阅读 3 分钟

Prolog 用于提供元组、列表、数字、原子和模式。在本节中,我们可以定义作为参数传递的对象类型。

简单类型

这种 Prolog 类型取决于实现。下表显示了 Prolog 简单类型的实现

类型
Boolean真, 假
变量变量
Integer整数
原子字符序列
实数浮点数

布尔常量不作为参数传递。变量描述字符串。字符串以大写字母或大写字母开头。原子是不具有数值的常量。所有原子都以小写字母或小写字母开头。

复合类型

在 Prolog 中,数据和程序之间的区别被模糊化。在参数中,数据通常被传递给谓词。在 Prolog 中,最常见的数据结构是列表。列表很像堆栈,我们只能顺序访问列表中的元素,也很像数组,我们有一个元素列表按顺序排列。

Prolog 用于允许任意模式作为数据,并且该模式表示元组。Prolog 不提供数组。但单维或多维数组可以表示为列表或列表的列表。数组也可以通过数据库中的一组事实来表示。

类型表示 [ 逗号分隔的项目序列 ] 列表模式的项目序列

使用方括号 ([]+),Prolog 列表可以表示。以下示例显示了一个水果列表

[芒果, 葡萄, 橙子]

上面的列表显示了芒果、葡萄和橙子的元素。在 Prolog 列表中,元素是有序的。如果没有索引,元素也将被排序。使用模式,可以表示元组。

示例

book(author(aaby,anthony),title(labmanual),data(1991))

使用模式匹配,可以访问元组的元素。

book(Title,Author,Publisher,Date).author(LName,FName).

类型谓词

由于 Prolog 是一种弱类型语言,用户必须确定参数类型。为了确定 Prolog 中的参数类型,可以使用以下内置谓词。

谓词检查是否
atom(A)A 是一个原子
atomic(A)A 是一个数字或一个原子
number(N)N 是一个整数或实数值
var(V)V 是一个变量
nonvar(NV)NV 不是一个变量
integer(I)I 是一个整数
real(R)R 是一个浮点数
T =LT 是一个术语,L 是一个列表
functor(T,F,A)T 是一个具有函子 F 的术语,A 是一个元数
clause(H, T)H :- T 是一条程序规则

在上面的例子中,T =..L, function(T,F,A) 和 clause(H,T) 用于程序操作。

其中

clause(H,T): 它检查数据库内容。
T =..L: 它可以操作术语。
functor(T,F,A): 它也可以操作术语。

以下示例显示了谓词函数

functor (T,F,A)

T 是一个术语,F 是它的函子,A 是它的元数。

?- functor(t(x,y,z),F,A).
F = t
A = 6

此处,

t: 它是术语的函数
3: 它是术语的元数


下一个主题Prolog 语法