% File src/library/base/man/is.language.Rd
% Part of the R package, https://www.R-project.org
% Copyright 1995-2018 R Core Team
% Distributed under GPL 2 or later

\name{is.language}
\title{Is an Object a Language Object?}
\alias{is.language}
\alias{language}
\alias{language object}
\alias{language objects}
\usage{
is.language(x)
}
\description{
  \code{is.language} returns \code{TRUE} if \code{x} is a
  variable \code{\link{name}}, a \code{\link{call}}, or an
  \code{\link{expression}}.
}
\arguments{
  \item{x}{object to be tested.}
}
\note{
  A \code{name} is also known as \sQuote{symbol}, from its type
  (\code{\link{typeof}}), see \code{\link{is.symbol}}.

  If \code{\link{typeof}(x) == "language"}, then \code{is.language(x)}
  is always true, but the reverse does not hold as expressions or
  names \code{y} also fulfill \code{is.language(y)}, see the examples.

  This is a \link{primitive} function.
}
\references{
  \bibshow{R:Becker+Chambers+Wilks:1988}
}
\examples{
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))
}
\keyword{programming}
