HELP ROUNDBRA                                       Steven Hardy, March 1982

Round brackets, ( and ) , have two uses in POP-11.

Firstly, they can be used to alter the order of evaluation when using infix
procedures. For example:

    2 + 3 * 4 =>
    ** 14
    (2 + 3) * 4 =>
    ** 20

Secondly, they are used to indicate that a procedure is to be applied to some
arguments. The syntactic form:

    <expression> (<arguments>)

means 'evaluate the expression and apply the result to the arguments'.
Normally the expression is simply the name of a variable. It can however be
as complex as desired. Note that:

    foo(x)(y)

means 'apply FOO to X, and apply the result to Y'.

The second use can be modified by adding 'percent' symbols to the brackets,
e.g.

    <expression> (% <arguments> %)

In this case the procedure is not run immediately. Instead a new procedure is
created, a CLOSURE, which is a combination of the old procedure and the
arguments. E.g. from the procedure

    member("cat", [dog mouse cat pig]) =>
    ** <true>

we can form a 'closure' by partially applying MEMBER to the list
[cat dog mouse pig]. The result is a procedure which we can call ISANIMAL.

    vars isanimal;
    member(%[dog mouse cat pig]%) -> isanimal;

    isanimal("dog") =>
    ** <true>

    isanimal("pea")=>
    ** <false>

See TEACH *BRACKETS for a tutorial introduction to the use of brackets in
POP-11.

See also HELP
    *SQUAREBRA and
    *TWIDDLYBRA - for other types of brackets in POP-11 syntax
    *PARTAPPLY - for a summary of partial application
    *CLOSURES  - for details of closures
    *PERCENT  - for uses of the % symbol in POP-11
