Я начинаю изучать Пролог, решая другой пример. Я делаю кодирование длины прогона текстовых данных с использованием Пролога, который должен произвести символ, за которым следует число раз, которое это происходит в последовательности. Я хочу, чтобы ответ был в формате ниже. Это популярный вопрос, так как он есть на сайте 99 прологов, но я не мог найти правильный ответ в другом месте. Пожалуйста, проверьте код и посмотрите, можете ли вы помочь мне найти исправление.
формат ответа; [('a', 3), ('b', 2), ('c', 1), ('a', 2)]
myencode([],[]).
myencode([First|Rest], Encoded) :- run(Rest,First,1,Encoded).
run([], Last,N,[Last,N]).
run([H|T], Prev, N, Encoded) :-
dif(N, Prev),
Encoded=[Prev, N|Rest],
run(T,H,1,Rest);
succ(N,N1),
run(T,H,N1,Encoded).