id,summary,reporter,owner,description,type,status,priority,version,resolution,keywords,cc
8,Extend the semantics for brackets,PeterLjunglof,,"This is even more radical than ticket:7...

Extend the `[...]` construct to allow a (possibly empty) sequence of strings (and general string terms). Spaces inside the `[...]` will denote concatenation, not application. Applications can be written inside parenthesis. Then the following will be equivalent:
{{{
oper number str = table {Sing => str; Plur => str ++ ""s""};
lin f x y = {s = x.s ++ (number ""foo"" ! x.n) ++ ""bar"" ++ y.s};
lin f x y = {s = [x.s (number ""foo"" ! x.n) ""bar"" y.s]};
}}}
Note that if we forget the parentheses, and write `[x.s number ""foo"" ! x.n ""bar"" y.s]`, 
this is equivalent to `[x.s number (""foo"" ! x.n) ""bar"" y.s]`, which will generate a type error.

",enhancement,new,major,,,,
