Prolog递归,它将元素附加到列表中

时间:2011-12-13 11:49:35

标签: list recursion prolog

我尝试构建谓词,该谓词会附加随机数量的子列表结果列表。

my_predicate([], AnotherList, []).
my_predicate([Head|List], AnotherList, Result):-
  random(0,5,N),
  nested_predicate(N, Head, AnotherList, SM),
  my_predicate(List, AnotherList, Result),
  append(SM, Result, SM2),
  write(SM2).

一切都差不多,但我不能以任何方式将SM2分配给Result。我做错了什么?

1 个答案:

答案 0 :(得分:2)

在Prolog中,您无法为变量“赋值”值。此外,在您的代码中,Result将始终绑定到空列表。

我认为你想要的是这样的:

my_predicate([], AnotherList, []).
my_predicate([Head|List], AnotherList, Result):-
  random(0,5,N),
  nested_predicate(N, Head, AnotherList, SM),
  my_predicate(List, AnotherList, SM2),
  append(SM, SM2, Result),
  write(Result).