Ответ в теме: Добавление отрицательного элемента после положительного

      Комментарии к записи Ответ в теме: Добавление отрицательного элемента после положительного отключены
#1739

insert_negative([], []):-!. 
insert_negative([PositiveHead|Tail], [PositiveHead,NegativeHead|TailResult]):- 
PositiveHead > 0, !, 
NegativeHead is -PositiveHead, insert_negative(Tail, TailResult).
insert_negative([NegativeHead|Tail], [NegativeHead|TailResult]):- 
insert_negative(Tail, TailResult).

В пустом списке нет положительных элементов, ничего добавлять не надо — результатом является пустой список.
В противном случае список разделяется на голову (первый элемент) и хвост (остальные элементы).
Если первый элемент больше нуля, то вычисляется соответствующее отрицательное число, которое добавляется к результату рекурсивной обработки хвоста после головы. Если же первый элемент не больше ноля — то к результату рекурсивного вызова добавляется лишь первый элемент списка.