我需要用有限数量的元素初始化一些列表,都是一样的。
fill( 0, [], _ ) :- !.
fill( Index, [Value|List], Value ) :-
NextIndex is Index - 1,
fill( NextIndex, List, Value ).
切割是强制性的,以避免无限递归和失败结果。
我试图修改规则#2,但在给出预期的解决方案后,目标失败:
fill( Index, [Value|List], Value ) :-
Index > 0,
NextIndex is Index - 1,
fill( NextIndex, List, Value ).
这个怎么运作:
?- fill( 7, AllFalse, false ).
AllFalse = [false, false, false, false, false, false, false].
?-