如何解决prolog中的任务?

时间:2015-02-04 17:12:18

标签: prolog

我有一项在Prolog学习的任务

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

什么是Y? 怎么解决?

1 个答案:

答案 0 :(得分:2)

你有错别字。 .是一个二元仿函数 - 它必须始终只有两个参数。此外,=.之间必须有空格,因为它们在此处用作两个不同的运算符,而不是一个运算符:

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

测试:

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

Y是一个逻辑变量。你不解决它,Prolog确实如此。 =/2 performs a unification,结果,在这里,逻辑变量Y被实例化了一个值 - 这里,复合词用于描述,显然是一个列表。