Extended Types

Following is a list of argument types that are defined in terms of the simple argument types. This is a formal description of the types/domains used in the Arguments sections of the reference pages for the built-ins. The rules are given in BNF (Backus-Naur form).

term ::= (any Prolog term) | var | nonvar

list ::= [] | [term|list]

list of Type ::= [] | [Type|list of Type]

one of [Element|Rest] ::= Element | one of Rest

arity ::= {An integer X in the range 0..255}

char ::= {An integer X in the range 1..255}

chars ::= [] | [char|chars]

pair ::= term-term

simple_pred_spec ::= atom/arity

pred_spec ::= simple_pred_spec | atom:pred_spec

pred_spec_tree ::= [] | pred_spec | [pred_spec_tree|pred_spec_tree]

pred_spec_forest ::= [] | pred_spec
| [pred_spec_forest|pred_spec_forest]
| pred_spec_forest,pred_spec_forest

gen_pred_spec ::= atom | atom:gen_pred_spec
| simple_pred_spec

gen_pred_spec_tree ::= [] | gen_pred_spec
| [gen_pred_spec_tree|gen_pred_spec_tree]

gen_pred_spec_tree_var ::= gen_pred_spec_tree {in which all atoms also can be variables}

extern_spec ::= atom
| compound {all arguments being extern_arg}

extern_arg ::= +interf_arg_type | -interf_arg_type

foreign_spec ::= atom
| compound {all arguments being foreign_arg}

foreign_arg ::= +interf_arg_type | -interf_arg_type | [-interf_arg_type]

interf_arg_type ::= integer | float | single | double | atom
| term | string | string(integer) | address | address(atom)

file_spec ::= atom | atom(file_spec)

expr ::= {everything that is accepted as second argument to is/2;
see the description of arithmetic expressions in ref-ari-aex.}