In Prolog, the so-called meta-call is a built-in language feature. All Prolog code is represented by Prolog terms, allowing goals to be constructed dynamically and be used like other goals without additional predicates:
?- Goal = dif(X, Y), Goal. dif(X, Y).
Using this mechanism, other higher-order predicates can be defined in Prolog itself.