使用Prolog规则在查询中显示给定列表的第一个元素?

时间:2018-01-22 05:21:22

标签: prolog

这是关于范例试卷的一个问题的第二部分,我正在努力解决这个问题,这让我感到有点难过,但后来我仍然是一个很有道理的人,所以解决方案可能很明显。

我写了这个规则/事实contains1(X, [X|_]).,用于检查给定元素是否等于给定列表的头部。 这很好,它按预期工作,从我所有的阅读中我可能95%肯定这是最好的方法去做。但后来问题还说要使用此规则编写一个序言 来显示给定列表中的第一个元素。

我正在使用swi-prolog进入并测试我的所有规则等,而我知道如何让它显示给定列表的第一个元素的唯一方法是使用查询[H|T] = (some_list)。那么我究竟如何将自己的规则运用到这个......?任何帮助或朝着正确方向的观点都会非常感激,欢呼。

1 个答案:

答案 0 :(得分:1)

让prolog找出X的值使该子句有效:

contains(X, sample_list).

例如,

contains(X, [1, 2, 3]).

将返回X = 1,因为当X = 1时,该子句为真。

请记住,当给出这样的子句时,Prolog会尝试查找X的所有值,使该子句成为真。