10.23.5 Casting

Prolog can “cast” one type of foreign term to another. This means that
the foreign term is treated just as if it where the other type. This is
done with the following procedure:

cast(+Foreign0, +New_type, -Foreign)

where Foreign is the foreign term that is the same data as
Foreign0, only is of foreign type New_type.
Foreign0 is not affected. This is much like casting in C.

Casting a foreign term to address will get you the raw address of a
foreign term. This is not often necessary, but it is occasionally
useful in order to obtain an indexable value to use in the first
argument of a dynamic predicate you are maintaining. An address may
also be casted to a proper foreign type.

This predicate should be used with great care, as it is quite easy to
get into trouble with this.