AtomQ

AtomQ[expr]

yields True if expr is an expression which cannot be divided into subexpressions, and yields False otherwise.

Details

  • You can use AtomQ in a recursive procedure to tell when you have reached the bottom of the tree corresponding to an expression.
  • AtomQ gives True for symbols, numbers, strings, and other raw objects, such as sparse arrays.
  • AtomQ gives True for any object whose subparts cannot be accessed using functions like Map.

Examples

open allclose all

Basic Examples  (1)

Test if an expression cannot be subdivided:

Since it is not an atom, its parts can be extracted:

This is a number that is an atom:

Scope  (6)

Strings are not subdividable:

Symbols are not subdividable:

Numbers are not subdividable:

Rational numbers appear to have a compound structure:

As numbers, they are not subdividable:

The parts can be accessed through Numerator and Denominator:

Complex numbers appear to have a compound structure:

As numbers, they are not subdividable:

The parts can be accessed through Re and Im:

SparseArray objects are atomic raw objects:

Commands that work with SparseArray objects typically do so on the represented array:

The FullForm of a SparseArray object is designed to be sufficient to reconstruct the raw object:

Applications  (2)

Find the number of unsubdividable leaves in an expression:

A deeply nested expression:

This is equivalent to LeafCount:

With the option Heads->False, only atoms with no branches are counted:

This corresponds to the dangling leaves you see with TreeForm:

Find the minimum and maximum "depth" of an expression:

Depth gives the maximum depth plus 1:

Properties & Relations  (1)

Map[f,expr,{-1}] generally maps f on atoms in expr:

This is equivalent to the following recursive function:

Introduced in 1988
 (1.0)
 |
Updated in 2003
 (5.0)