У меня есть эта программа на Прологе, она удаляет элементы каждого n-го элемента из списка, например:
removenth ([1,2,3,4,5,6], 2, R).
он должен вернуть: R = [1,3,5].
У меня есть это:
removeallNth(F, N, R):- removeallNth(F, N, 1, R).
removeallNth([], _, _, R).
removeallNth([H|T], N, C, R):- N \== C, Nc is C + 1, concat(R,H,S),
removeallNth(T, N, Nc, S).
removeallNth([_|T], N, C, R):- N == C, removeallNth(T, N, 1, R).
Проблема в том, что он возвращает true вместо R = [1,3,5]. Я проверил в отладчике SWI-Prolog, и он приходит к правильному результату, но затем продолжает проверять вещи Я понимаю, что это связано с объединением, но я не знаю, как его применить.