In earlier releases, some errors caused simple failures. For example,
| ?- functor(A,B,C).
no
This is not logical, since it is easy to choose A, B, C such that
functor(A,B,C) is true. Generally, built-in predicates should
enumerate all their logical solutions or else raise an exception in
cases such as this one where enumeration is impractical. Thus you now
get:
| ?- functor(A,B,C).
! Instantiation error in argument 2 of functor/3
! goal: functor(_530,_531,_532)
Existing code that relies on the old error behavior will need
modification to take this into account. The insertion of appropriate
nonvar/1 checks is usually all that is required.