How do i only sum all the positive numbers?
sumlist([],0).
sumlist([H|T],N):-sumlist(T,N1),N is N1 +H.
?- sumlist([-2,2,3],N).
N = 3, unexpected.
N = 5. % expected
Another method:
plus_positive(N, Sum, Sum1) :-
( N > 0 ->
plus(N, Sum, Sum1)
; Sum1 = Sum
).
sum_positive(Lst, Sum) :-
foldl(plus_positive, Lst, 0, Sum).
Result in swi-prolog:
?- sum_positive([-2, 2, -4, 3, -8], Sum).
Sum = 5.