I think that a lot of issues that are non-aesthetic (eg |, << vs +=)
revolve around choosing sensible defaults, or in other words, deciding
which use occurs frequently enough to warrant a shorter form.
Having read through the document in the wiki with this in mind, I
realized why I like the current syntax:
y ~ some_distribution(some_parameters);
is the kind of expression I need to write most often. I am not sure that
the language needs be super-explicit about emphasizing that we are in
fact incrementing a log density, in every single line.
I could also live with
some_distribution(y | some_parameters);
with the understanding that for statements that are not assignments or
shorthand for assignments (eg var+=), ld+= is assumed without making it
explicit.
Regarding <> keyword arguments: I am under the impression that blocks of
normalized statements tend to occur frequently in the same
block/expression. So one could introduce a prefix like
normalized [expression];
eg
normalized cauchy_lpdf(y | mu, tau);
or
normalized {
...a block of multiple such statements...
}
Similarly for vectorized, eg
log_lik <- normalized vector normal(y | mu, tau);
instead of
log_lik <- normal_lpdf<norm=true,vector=true>(y | mu, tau);
But I don't know how much this would complicate the parser.
Anyway, I think it would be instructive to have an example page of 2-5
programs that demonstrate the shortcomings of current syntax, and then
rewrite them with proposed syntaxes (rewriting done by those who make a
proposal for a syntax).
Best,
Tamas