sub_atom/5
Module: builtins
sub_atom/5 — dissect an atom
FORMS
sub_atom(Atom, Before, Length, After, SubAtom)
DESCRIPTION
sub_atom/5 is used to take apart an atom. The only instantiation requirement is that Atom be instantiated to an atom. If any of Before, Length, or After are instantiated, they must be instantiated to integers. If SubAtom is instantiated, it must be instantiated to an atom.
The Before parameter gives the number of characters in Atom before the start of the atom SubAtom. Length is the length of this SubAtom. After is the number of characters of Atom following the end of SubAtom. The first character of any atom is considered to begin at position 1.
sub_atom/5 is resatisfiable. Upon backtracking all possible values of Before, Length, After, and SubAtom are generated subject to the initial instantiations of these parameters.
EXAMPLES
?- sub_atom(abcdefg, 2, 3, X, Y).
X=2
Y=cde
yes.
?- sub_atom(abcdefg, B, L, A, cde).
B=2
L=3
A=2
yes.
?- sub_atom(abcdefg, B, 4, A, Y).
B=0
A=3
Y=abcd ;
B=1
A=2
Y=bcde ;
B=2
A=1
Y=cdef ;
B=3
A=0
Y=defg ;
no.
ERRORS
Atom is a variable
– – – – > instantiation_error
Atom is neither a variable nor an atom
– – – – > type_error(atom, Atom)
SubAtom is neither a variable nor an atom
– – – – > type_error(atom, SubAtom)
Start is neither a variable nor an integer
– – – – > type_error(integer, Start)
Length is neither a variable nor an integer
– – – – > type_error(integer, Length)
SEE ALSO
atom_length/2atom_concat/3atom_chars/2atom_codes/2- User Guide (Prolog I/O)