如何在prolog中解决学习任务?

如何在prolog中解决学习任务?,prolog,Prolog,我有一项任务要用Prolog学习 Y=.(.(1,[],.(2,.(a,.(b,[])))). 什么是Y? 如何解决它?你有打字错误是一个二进制函子-它必须始终只有两个参数。另外,在=和之间必须有一个空格,因为它们在这里用作两个不同的运算符,而不是一个运算符: Y=.(.(1,[] , .(2, .(a, .(b,[])))). Y=.(.(1,[]), .(2, .(a, .(b,[])))). ------- -------

我有一项任务要用Prolog学习

Y=.(.(1,[],.(2,.(a,.(b,[])))).
什么是
Y

如何解决它?

你有打字错误<代码>是一个二进制函子-它必须始终只有两个参数。另外,在
=
之间必须有一个空格,因为它们在这里用作两个不同的运算符,而不是一个运算符:

Y=.(.(1,[] , .(2, .(a, .(b,[])))).
Y=.(.(1,[]), .(2, .(a, .(b,[])))).
    -------            ------- 
                  -------------
             -------------------
测试:

2 ?- Y = .( .(1,[]), .(2, .(a, .(b,[])))).
Y = [[1], 2, a, b].

Y
是一个逻辑变量。你不解决它,Prolog解决它,因此,在这里,逻辑变量
Y
被实例化为一个值-在这里,复合词显然描述了一个列表。

Y
是一个变量。有关表达式,请参见“立即学习序言”中的!请注意,您有5个左括号,只有4个右括号。另外(至少在SWI中)
=。
符号i与
=。
@EugeneSh不同
Y
是一个逻辑变量,恰好被实例化为列表。@潜伏者不是指布尔变量的逻辑变量?@EugeneSh。在这种情况下没有。这是逻辑的一般意义,而不是布尔意义。