Prolog is something you may not otherwise encounter. It sidesteps the issue of pseudocode all together. In a sense, there is no code. There are only facts and rules.
For example, the append predicate is just things we know about lists, as follows:
Appending a list Y to an empty list yields Y.
append([], Y, Y).
If appending Xs to Ys yields Zs, then we can prepend the same value to Xs and Zs and the relation will still hold.
append([X|Xs], Ys, [X|Zs]) :- append(Xs, Ys, Zs).
We haven't actually written code that does stuff. We've just said what we know about appending lists. But now we can ask Prolog to append 2 lists:
?- append([1,2],[3,4],Z).
Z = [1, 2, 3, 4].
Or give Prolog a list and ask it to show us what lists we could append to get the target list:
?- append(X,Y,[1,2]).
X = [],
Y = [1, 2] ;
X = [1],
Y = [2] ;
X = [1, 2],
Y = [] ;