On Wed, 20 May 2020, Paul Smith wrote:
Grouping: do we try to implement expression grouping with () (e.g.,
$(expr (1 + 1) * 4) or is it good enough to just say people need to
nest expr functions: $(expr $(expr 1 + 1) * 4)?
I think nesting `expr` is too noisy.
We need to find a good balance between implementation complexity and
"noisy use".
Both a Lisp-like prefix syntax and a Forth/RPN-like postfix syntax are
concise and easy to implement. Infix semantics are messy, because they
require special "order of operations" logic to resolve ambiguities, and
there is no universal standard for that.
The above example would look something like the following.
Prefix: $(* $(+ 1 1) 4)
Postfix: $(rpn 1 1 + 4 *)
If you do choose to use infix with a function named expr, then I recommend
following the expr man page exactly. Since expr is part of GNU coreutils,
you might even be able to re-use much of the code.
- Daniel