Subject: Re: [SWIPL] I can not use system predicates after failure

From: Jan Wielemaker <[email-masked]>
Date: Wed, 7 Feb 2001 09:55:06 +0100

On Wed, 07 Feb 2001, johnw wrote:
>Hi, there,
>
>I've being using SWI-Prolog, version 3.2.8, for a long time, and
>recently, I've upgraded it to version 3.4.4.
>Most of the "old" codes can run on version 3.4.4 smoothly,
>but some are not.
>My biggest problem is that some system predictes
>(such as gensym/2) can not be invoked again after the failure of some
>clauses.

Do you have an example I can run?  If this is the case it is simply
a bug that must be fixed quickly.

>I've tried to modified my old programs but the failure still exists.

What do yoy mean by failure?  Saying `no' or `ERROR'?  If `error,' there
is a patch that may be related in version 3.4.5.

>Are there some new flags I must turn on (or off) in version 3.4.4 or
>some of my codes are incompatable to the ISO standard ?

If you use fancy atoms (with \ in them) have a look at the
character_escapes flag.  '\n' is read as an atom holding the newline
in 3.3.x and later, while it is the plain atom \n in 3.2.x  As the
current default behaviour is ISO compliant, it might be wise to change
your code.

>I've searched the FAQ but can find nothing to solve my peoblem.
>Is there someone know how to take care of this or 
>Where I can find solution?

Have a look at the release-notes section on version 3.3.  It contains
a complete survey of the incompatibilities.  Also note the order of
the arguments to select/3 have changed in 3.4.

	--- Jan