With "pack" we refer to the following source constructs which are
collections of other constructs enclosed between ( and )
symbols:
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)