Hej!
Z ciekawości chciałem samemu zdefiniować predykat dla append w prologu, tą definicję znalazłem gdzieś w necie. Problem w tym, że to działa ale nie mam pojęcia dlaczego. Dlaczego ogonem listy wynikowej jest ogon listy pierwszej złączony z listą drugą? Nigdzie nie widzę tu modyfikacji na L2 czy łączenia L3.
append2([], L, L).
append2([X|L1], L2, [X|L3]) :- append2(L1, L2, L3).