But it always returns false. Why?
Your definition does not always fail:
?- addUp([1],X).
X = [1+2].
So sometimes it succeeds. And it seems that this case is more or less what you wanted. Where else does it succeed? In other programming languages you would have to guess or, heaven forbid, read the program. In Prolog, there is no need for this. Simply find a good query. A good candidate is the most general query:
?- addUp(Xs,Ys).
Xs = [] ...
So your definition succeeds for Xs equal to [], and Ys equal to ... well, equal to anything. Therefore, this answer is too general.
Another goal catches my eye: is_list(R)->append([H+2],R,R). Let's imagine, when this will be true. For R = [] not, nor for R = [_]. In fact, there is no length, where this will be true.
Now, we can start fixing your program. See chac/CapelliC's suggestion.