List 序言:获取两个元素的列表,当且仅当第一个元素与第二个元素相同时才返回true

List 序言:获取两个元素的列表,当且仅当第一个元素与第二个元素相同时才返回true,list,prolog,duplicates,List,Prolog,Duplicates,我是一个新的prolog程序员,对于一个任务,我必须有一个基本的程序,当且仅当列表X是两个元素的列表,第一个元素与第二个元素相同时才能成功 从我对prolog的看法来看,程序似乎非常小,所以我输入了以下内容: firstPair(x,x). 当我在swipl下运行它时,我得到以下输出: Syntax error: Operator expected 还有什么需要做的吗?我想如果我用第一对(1,2)来执行这个。这就是它所需要知道的全部,它是假的。首先,小写的x不是一个变量,它是一个原子。使x大

我是一个新的prolog程序员,对于一个任务,我必须有一个基本的程序,当且仅当列表X是两个元素的列表,第一个元素与第二个元素相同时才能成功

从我对prolog的看法来看,程序似乎非常小,所以我输入了以下内容:

firstPair(x,x).
当我在swipl下运行它时,我得到以下输出:

Syntax error: Operator expected

还有什么需要做的吗?我想如果我用第一对(1,2)来执行这个。这就是它所需要知道的全部,它是假的。

首先,小写的
x
不是一个变量,它是一个原子。使
x
大写以解决问题:

firstPair(X,X).
第二,您不需要在解释器中输入这个。相反,您将其写入一个文件
firstPair.pl
,然后将该文件读入Prolog

在命令提示下,键入以下内容:

['firstPair.pl'].
按回车键。现在您可以使用
firstPair/2
规则

最后,由于作业涉及列表,我认为讲师希望您编写
firstPair/1
,而不是
firstPair/2

firstPair([X,X]).

首先,小写的
x
不是一个变量,而是一个原子。使
x
大写以解决问题:

firstPair(X,X).
第二,您不需要在解释器中输入这个。相反,您将其写入一个文件
firstPair.pl
,然后将该文件读入Prolog

在命令提示下,键入以下内容:

['firstPair.pl'].
按回车键。现在您可以使用
firstPair/2
规则

最后,由于作业涉及列表,我认为讲师希望您编写
firstPair/1
,而不是
firstPair/2

firstPair([X,X]).
你的计划/事实

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

当且仅当列表X是两个元素的列表时成功的程序, 第一个和第二个一样

你需要这样的东西:

list_of_two_elements( [X,X] ).
如果传递了一个术语,该术语是(或可以与)两个元素的列表,这两个元素是相同的,或可以通过统一而变得相同,那么这将成功。例如,以下所有操作都将成功:

  • 列出两个元素(X)的列表。

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

  • 列出两个元素([1,1])。

  • 列出两个元素([1,X])。
    (如果成功,
    X
    这里将与整数
    1
    统一)

您的计划/事实

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

当且仅当列表X是两个元素的列表时成功的程序, 第一个和第二个一样

你需要这样的东西:

list_of_two_elements( [X,X] ).
如果传递了一个术语,该术语是(或可以与)两个元素的列表,这两个元素是相同的,或可以通过统一而变得相同,那么这将成功。例如,以下所有操作都将成功:

  • 列出两个元素(X)的列表。

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

  • 列出两个元素([1,1])。

  • 列出两个元素([1,X])。
    (如果成功,
    X
    这里将与整数
    1
    统一)


从您的描述中,不清楚错误消息来自何处:至少您显示的程序是有效语法。我认为您误解了您的赋值:您需要编写第一对(X)(注意单个参数)。那么“shape”X需要有什么?从您的描述来看,不清楚错误消息来自何处:至少您显示的程序是有效语法。我想您误解了您的赋值:您需要编写第一对(X)(请注意单个参数)。那么“shape”X需要有什么呢?@false看起来这毕竟是个问题:)@user1768884:如果你(和我一样)喜欢不太混乱的语法,请注意?-[firstPair]。will有效。@false看起来这毕竟是个问题:)@user1768884:如果你(和我一样)喜欢不太混乱的语法,请注意?-[firstPair]。威尔工作。