Most of these types are defined by an arity-1 built-in predicate of
the same name. Below is a brief definition of the other types.
any any term
between(FloatL,FloatU) Number
[FloatL..FloatU]
between(IntL,IntU) Integer [IntL..IntU]
boolean One of true or false
callable Atom or compound term
char Atom of length 1
chars Proper list of 1-character atoms
code Representation Unicode code point (0..0x10ffff)
codes Proper list of Unicode character codes
compound compound term
compound(Term) Compound with same
name/arity as term; checks arguments
constant Same as atomic
list(Type) Proper list with elements of Type
list_or_partial_list A list or an open list (ending in a
variable); see is_list_or_partial_list/1
negative_integer Integer < 0
nonneg Integer >= 0
oneof(L) Ground term that is member of L
pair Key-Value pair. Same as compound(any-any)
positive_integer Integer > 0
proper_list Same as list
stream A stream name or valid stream handle; see
is_stream/1
symbol Same as atom
text One of atom, string, chars
or codes
type Term is a valid type specification