Я пытаюсь написать синтаксис пролога, чтобы удалить каждый n-й элемент списка. Мой код следующий:
deletenth([], _, _, []).
deletenth([_H | T], N, 1, T) :-
deletenth(T, N, N, T).
deletenth([H | T], GlobalN, LocalN, [H | T]) :-
LocalN \= 0,
TMP is LocalN - 1,
deletenth(T, GlobalN, TMP, T).
Моя проблема в том, что он не распознает предикат в середине, если он получает параметр LocalN = 1
в процессе рекурсии. Только если вручную так вызвать с терминала. Может быть, мой код вообще не подходит для этой задачи, но эта штука меня продолжает беспокоить. Хотелось бы, чтобы кто-нибудь помог мне с этим.