Compound terms can be viewed as an array of terms with a name and 
arity (length). This view is expressed by overloading the []
A type_error is raised if the argument is not compound 
and a
domain_error if the index is out of range.
In addition, the following functions are defined:
PlTerm is a compound term and arg is 
between 1 and the arity of the term, return a new PlTerm 
representing the arg-th argument of the term. If PlTerm is 
not compound, a
type_error is raised. Id arg is out of range, a
domain_error is raised. Please note the counting from 1 
which is consistent to Prolog's arg/3 
predicate, but inconsistent to C's normal view on an array. See also 
class PlCompound. The following example tests x 
to represent a term with first-argument an atom or string equal to gnat.
   ...,
   if ( x[1] == "gnat" )
     ...
const char * holding the name of the functor of 
the compound term. Raises a type_error if the argument is 
not compound.type_error 
if the argument is not compound.