У меня есть какое-то правило, которое set_value_in_array.Он является значением repalce в массиве [J] по Val.
set_value_in_array([], _, _, _, _).
set_value_in_array([Head | Array], Val, J, AccJ, NewArray) :-
AccJ = J,
NewAccJ is AccJ + 1,
set_value_in_array(Array, Val, J, NewAccJ, [Val | NewArray])
;
NewAccJ is AccJ + 1,
set_value_in_array(Array, Val, J, NewAccJ, [Head | NewArray]).
-----------------------------
-----------------------------
% execute in terminal
?- set_value_in_array([1,2,3], 10, 1, 0, NewArray).
true ;
true.
Почему set_value_in_array НЕ показывает NewArray как [1, 10, 3]?Он всегда возвращает true.
Обновление:
Когда я делаю set_value_in_array ([], Val, J, AccJ, NewArray): - запись (NewArray).Он возвращает что-то, смотрит в правильное решение
?- set_value_in_array([1,2,3,4,5,6],100,1,0,X).
[6, 5, 4, 3, 100, 1|_G516]
true.
Но как заставить это работать без функции записи?