Spaces within packs (GNU Algol 68 Coding Guidelines)

### 2.4 Spaces within packs ¶

With "pack" we refer to the following source constructs which are collections of other constructs enclosed between `(` and `)` symbols:

- The actual parameters in a call.
- The formal parameters in a routine text.
- The fields in a struct mode declarator.
- The modes of the united modes in an union mode declarator.
- The modes of the parameters in an operator or procedure declarator.

Spaces are optional after commas in packs when both the preceding and following symbols are tags.

Put a space after commas in packs when the next construct is not a tag, but only if the preceding construct is a tag.

Do not put spaces before commas in packs.

Examples:

    { Spaces are optional around commas surrounded by tags }
    process(socket, resp, fragmented);
    process(socket,resp,fragmented);
    op E = (Symbol a,b) bool: a = b;
    op E = (Symbol a, b) bool: a = b;

    { Space after commas separating a non tag and a tag }
    op E = (Symbol s, Word w) bool: s E w;
    mode M = struct (int i, real r);

    { No spaces in commas separating non tags }
    proc(int,string,[]real)int callback;
    op(int,int)int handler;
    mode Data = union (void,bool,int)