atomic(Term) :-
        nonvar(Term),
        \+ compound(Term).
SWI-Prolog defines the following atomic datatypes: atom (atom/1), 
string (string/1), 
integer (integer/1), 
floating point number (float/1), 
rational (rational/1) 
and blob (blob/2). 
In addition, the symbol
[] (empty list) is atomic, but not an atom. See
section 5.1.