Availability:built-in
[ISO]callable(@Term)True if Term is bound to an atom or a compound term. This was 
intended as a type-test for arguments to call/1, call/2 
etc. Note that callable only tests the surface term. Terms such 
as (22,true) are considered callable, but cause call/1 
to raise a type error. Module-qualification of meta-argument (see meta_predicate/1) 
using
:/2
:- meta_predicate p(0).
p(G) :- callable(G), call(G).
?- p(22).
ERROR: Type error: `callable' expected, found `22'
ERROR: In:
ERROR:    [6] p(user:22)