相关疑难解决方法(0)

Prolog匿名变量

以下是我对Prolog变量的理解.

  1. 单个下划线代表匿名变量,每次发生时都像一个新变量.

  2. 以_W这样的下划线开头的变量名不是匿名变量.或者,Prolog内部生成的变量名称(如_G189)不被视为匿名:

?- append([1,2],X,Y).
X = _G189
Y = [1, 2|_G189]
Run Code Online (Sandbox Code Playgroud)

你能帮我理解一下吗?

顺便说一下,我从一些教程中得到了上面的例子,但是当我在SWI-Prolog版本6中运行它时,我得到以下内容:

?- append([1,2],X,Y).
Y = [1, 2|X].
Run Code Online (Sandbox Code Playgroud)

感谢您.

prolog prolog-toplevel

13
推荐指数
1
解决办法
8146
查看次数

序言.在查询中,如何将条件放在结果中我不想要的变量上?

想象一下,我有以下知识库,为每个人提供他的名字和年龄.

person(mary, 39).
person(john, 24).
person(sandy, 17).
Run Code Online (Sandbox Code Playgroud)

现在,我想找回所有超过20年的人.此外,我只想收集他们的名字,而不是他们的年龄.在这里,我想要检索maryjohn.

如何在Prolog中更常见,更具体地说在SWI-Prolog中?

如果我们使用非匿名变量,例如:

?- person(X, Y), Y > 20.
Run Code Online (Sandbox Code Playgroud)

Prolog会给我两者的价值X,Y而且我不想要Y.

我不能使用匿名变量,_因为Prolog无法链接其两个实例.以下是错误:

?- person(X, _), _ > 20.
Run Code Online (Sandbox Code Playgroud)

那么,怎么做呢?

prolog prolog-toplevel

6
推荐指数
2
解决办法
2475
查看次数

标签 统计

prolog ×2

prolog-toplevel ×2