在Prolog中表达List的两种不同方式

时间:2015-03-31 23:22:50

标签: prolog

这两个条款之间的区别是什么:

L=[X,H|Y].

append(X,[H|Y],L).

这是我的代码中的一个条款,第一个不起作用,第二个起作用,只是不知道差异。

1 个答案:

答案 0 :(得分:1)

表达式[X,H|Y]表示一个列表,其第一项是X的值,其第二项是H的值,其尾部是Y的值。如果X = 1,H = 2,并且Y = [3,4,5],其值为[1,2,3,4,5]。如果X = [1,2,3],H = [4,5,6],Y = [7,8,9],则其值为[[1,2,3],[4,5, 6],7,8,9]。表达式L=[X,H|Y]将列表的值绑定到L。

另一方面,谓词append(X,[H|Y],L)将第一项为H且其尾部为Y的列表附加到列表X,并将结果绑定到L.如果X = 1,则H = 2,并且Y = [3,4,5],结果将是一个错误,因为X不是一个列表。如果X = [1,2,3],H = [4,5,6],Y = [7,8,9],结果将L与值[1,2,3,[ 4,5,6],7,8,9]。