Может кто-нибудь объяснить логическую разницу в этих 2 программах, которая приводит к разным результатам?(программа2 отлично работает для сжатия, а программа1 - нет)
программа1:
compress(x, x).
compress([x|Tail], [x|Tl]) :-
compress(Tail, [x|Tl])
; compress(Tail, Tl).
программа2:
compress([], []).
compress([Head, Head|Rest], Out):-
compress([Head|Rest], Out).
compress([Head|Tail], [Head|Out]):-
compress(Tail, Out).