Compound Syntax

The simplest form of structuring terms is the compound. The compound consists of a name followed by one or many arguments. The principal name is called the functor and the number of arguments is called the arity. To disambiguate from operator expressions a compound is only recognized when the name directly precedes the left parenthesis (“(”).

compound   --> "{" term(1200) "}"
   | atom "(" arguments ")"
   | atom "(" ")".

arguments --> term(999) { "," term(999) }.

f(a,b)         % is a compound
{} % is the empty set, corresponds to '{}'
{a}            % is a compound, corresponds to '{}'(a)
-(a,b)         % is a compound, corresponds to a - b
- (a, b) % is an expression, corresponds to - ,(a, b)

By means of the braces (“{}”) a form of set notation can be invoked. The empty set notation is just a short hand for the name ‘{}’. The set notation that surrounds a term is a compound of arity one with the functor ‘{}’. Since the empty set {} and the empty list [] do belong to the category of atoms they can be used as a functor as well.