Prolog 中的输入和输出术语

2025年3月17日 | 阅读 3 分钟

Prolog 提供了启用字符或术语的输入和输出的功能。 使用术语更简单。 最初,我们将假设所有输入都来自用户的键盘,所有输出都显示在用户的屏幕上。 在本节中,我们将描述使用外部文件(如 CR-ROM 或硬盘)的输入和输出。 就像许多其他内置谓词一样,输入和输出的谓词是不可满足的,这意味着在回溯时它们总是会失败。

输出术语

为了提供输入术语,我们将使用内置谓词 write/1。 此谓词接受单个参数。 当我们评估该谓词时,该术语将被写入当前的输出流。 默认情况下,当前的输出流是用户的屏幕。

在本教程中,我们多次使用了内置谓词 n1/0。 此谓词不带参数。 当我们评估 nl 谓词时,这将导致一个新行输出到当前的输出流。

例如

如果原子在输入时被引用,由于 write 谓词,它们在输出时不会被引用。 如果我们想输出引号,可以使用 writeq/1 谓词。

例如

输入术语

为了提供输入术语,我们将使用内置谓词 read/1。 此谓词接受单个参数,该参数必须是变量。 当我们评估此谓词时,由于此原因,下一个术语将从当前的输入流中读取。 默认情况下,当前的输入流是用户的键盘。

在输入流中,至少有一个空格字符或换行符,后面跟着一个句点(“.”)。 空格和句点不是术语的一部分,但它们被读取。

请注意,如果需要从键盘输入,将显示一个提示符,例如冒号。 在 Prolog 接受用户的输入之前,我们必须按“回车”键。

Prolog 评估一个 read 目标时,输入术语与参数的变量统一。 如果参数的变量未绑定,则它将绑定到输入值。

例如

如果参数的变量已经绑定,则当且仅当先前绑定的值和输入术语相同时,目标才成功。

例如