繁体   English   中英

Prolog:采用两个元素的列表,并且仅当第一个元素与第二个元素相同时才返回true

[英]Prolog: take a list of two elements, return true if and only if the first element is same as second

我是一名新手Prolog程序员,对于一项作业,我必须拥有一个基本程序,该程序必须且仅当list X是两个元素的列表且第一个元素与第二个元素相同时才能成功。

从我的序言的角度来看,程序似乎很小,所以我输入了以下内容:

firstPair(x,x).

当我在swipl下运行它时,我将其作为输出:

Syntax error: Operator expected

还有什么需要做的吗? 我以为如果我用firstPair(1,2)执行此操作。 这就是知道它为假所需要的全部。

首先,小写的x不是变量,它是一个atom 使x大写可解决此问题:

firstPair(X,X).

其次,您不要在解释器中键入此内容。 而是将其写入文件firstPair.pl ,然后将该文件读取到Prolog中。

在命令提示符下,键入:

['firstPair.pl'].

按回车。 现在,您可以使用firstPair/2规则。

最后,由于作业讨论的是列表,所以我认为讲师希望您编写firstPair/1 ,而不是firstPair/2

firstPair([X,X]).

您的程序/事实

firstPair(X,X).

如果给定的两个参数可以统一 (无论它们是列表,原子,变量等),则将成功。为了满足您的规范,

且仅当list X是两个元素的列表且第一个元素与第二个元素相同时,程序才会成功。

您需要这样的东西:

list_of_two_elements( [X,X] ).

如果传递的单个术语是(或可以与之统一)两个元素的列表,或者可以通过统一使两个元素相同,那么这将成功。 例如,以下所有都会成功:

  • list_of_two_elements( X ).

    成功后,变量X将与包含相同未绑定变量的两个元素的列表统一,例如[V1,V1]

  • list_of_two_elements( [1,1] ).

  • list_of-two_elements( [1,X] ). (成功后,此处的X将与整数1统一。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM