Существует разница между предикатом pos(10, 20).
и term pos(10, 20)
.
Для предиката быть кодом:
pos(10, 20).
И это будет выполнение кода:
:- pos(X, 20), write(X), nl.
Для члена это будет код:
get_pos_x(pos(X, _)) :-
write(X), nl.
И это будет выполнение кода:
:- get_pos_x(pos(10, 20)).