我尝试构建谓词,该谓词会附加随机数量的子列表结果列表。
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。我做错了什么?
答案 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).