5The first/2 predicate could just as well have been defined as follows, with explicit calls to the unification operator =/2:
first(List, First):-
List = [Head|Tail],
First = Head.
The version in the text has moved these calls from the body of the definition into the head of the definition (as a result of which the body is empty). This technique is called ’unfolding’ and is a commonly used technique in Prolog programming.