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.