In ECLiPSe you can write clauses that use matching (or one-way
unification) instead of head unification.
Such clauses are written with the ?- functor instead of :-.
Matching has the property that no variables in the caller will be bound.
will fail for the following calls:
and succeed (printing b) for
Moreover, the clause
will fail for the calls
and succeed for