is.atomic(x) is.language(x) is.recursive(x)
is.language returns TRUE if x is some object that is part of the language (the value of a call to parse or an object that has one of the special modes used by the S-PLUS parser such as call, if, expression).
is.recursive returns TRUE if the mode of x indicates that x is a recursive object; that is, an object that can contain other objects as elements; most commonly list, but also expression, graphics, and a number of modes used in manipulating the language.
is.language(lsfit) # returns FALSE is.recursive(lsfit) # returns TRUE is.language(break) # returns TRUE is.atomic(NULL) # returns TRUE is.language(as.call(ls("a*"))) # returns TRUE is.recursive(as.call(ls("a*"))) # returns TRUE is.language(as.name(foo)) # returns TRUE