首页 文章

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

提问于
浏览
1

这是关于范式试卷的一个问题的第二部分,我正在努力解决这个问题,这让我有点难过,但后来我仍然是一个相当的prolog noob所以解决方案可能很明显..

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

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

1 回答

  • 1

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

    contains(X, sample_list).
    

    例如,

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

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

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

相关问题