如何为List设置动态域

时间:2011-04-12 16:31:03

标签: prolog

例如,我在

之后创建列表
length(List,5),
List :: 1..5,

我想设置列表的第二个元素,它看起来像 List[1] :: 1..2%列表,从0到4

我不知道如何实现它?

非常感谢:)

1 个答案:

答案 0 :(得分:1)

例如,在Swi-prolog中使用in运算符,我可以这样做:

init_static(List) :- length(List, 5), List in 1..5, List = [_,Y|_], Y in 1..2.

如果我事先知道我需要第二个元素的特定约束。

概括任何索引:

init_dynamic(I, List) :- length(List, 5), List in 1..5, length(L1, I), Y in 1..2, append(L1, [Y|_], List).

所以对第二个元素的查询是:

init_dynamic(1, [1,2,4,3,5]).
true.

我假设您可以在其他Prolog变体中使用::运算符执行类似的操作。