name(?Constant, ?Chars)If Constant is supplied, it should be an atom or
number.
Chars is unified with a list of character
codes representing the "name" of the constant. These are
precisely the characters that write/1 would write if
asked to write Constant.
If Constant is a variable, Chars should be
a proper list of character codes. If Chars looks like
the name of a number, Constant will be unified with
that number. The syntax for numbers that is accepted by name/2 is
exactly the one that read/1 accepts. If Chars does not
look like the name of a number, Constant will be
unified with an atom.
This attempt to guess what sort of constant you want means
that there are atoms that can be constructed by read/1 and by
atom_chars/2, but not by name/2.
name/2 is retained for backwards compatibility with
DEC-10 Prolog, C-Prolog, and earlier versions of Quintus
Prolog. New programs should use
atom_chars/2 or number_chars/2, whichever is appropriate.
name/2 is a built-in predicate.
library(strings) contains a predicate name1/2, which is
identical to name/2 except that it reports errors in the same way as
other library predicates.