\HeaderA{is.language}{Is an Object a Language Object?}{is.language}
\keyword{programming}{is.language}
\begin{Description}\relax
\code{is.language} returns \code{TRUE} if \code{x} is either a
variable \code{\LinkA{name}{name}}, a \code{\LinkA{call}{call}}, or an
\code{\LinkA{expression}{expression}}.
\end{Description}
\begin{Usage}
\begin{verbatim}
is.language(x)
\end{verbatim}
\end{Usage}
\begin{Arguments}
\begin{ldescription}
\item[\code{x}] object to be tested.
\end{ldescription}
\end{Arguments}
\begin{Details}\relax
\code{is.language} is generic: you can write methods to handle
specific classes of objects, see \LinkA{InternalMethods}{InternalMethods}.
\end{Details}
\begin{References}\relax
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988)
\emph{The New S Language}.
Wadsworth \& Brooks/Cole.
\end{References}
\begin{Examples}
\begin{ExampleCode}
ll <- list(a = expression(x^2 - 2*x + 1), b = as.name("Jim"),
           c = as.expression(exp(1)), d = call("sin", pi))
sapply(ll, typeof)
sapply(ll, mode)
stopifnot(sapply(ll, is.language))
\end{ExampleCode}
\end{Examples}

