Sujet : Re: Operator precedence
De : 643-408-1753 (at) *nospam* kylheku.com (Kaz Kylheku)
Groupes : comp.lang.awkDate : 24. May 2024, 04:45:50
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <20240523203557.409@kylheku.com>
References : 1 2 3
User-Agent : slrn/pre1.0.4-9 (Linux)
On 2024-05-23, Axel Reichert <
mail@axel-reichert.de> wrote:
Kaz Kylheku <643-408-1753@kylheku.com> writes:
>
Furthermore exponentation between on an intermediate precedence level
between unary minus and regular minus is simply insane.
>
This is a very good argument! Prior to reading it I was kind of
indifferent (at least in infix programming languages, but not in typeset
mathematics).
>
I made it n-ary in TXR Lisp:
>
1> (expt 5 2)
25
2> (expt 5 2 3)
390625
>
... so conforming to the habit of typeset mathematics, which is based on
the fact that
>
c
b
a
>
could be written as
>
bc
a
>
if meant to be left-associative. So having it right associative is the
more terse convention.
Yes. Also, in the left associative semantics, we have a choice. We can
do the exponentation earnestly as if by:
(expt (expt 5 2) 3)
Or we can take advantage of the identity:
(expt 5 (* 2 3))
The former could be important in some situation involving
floating-point: you can't always use simplifying identities.
The latter is favored when efficiency is more important.
A left associative n-ary expt function would have to make one of those
two choices: either doggedly do the exponentiations (such that the
function would be avoided by anyone looking for efficiency), or else
serve as a syntactic sugar for the exponent raised to the product
of the remaining arguments (which provides low value as a syntactic
sugar, and yet has to be avoided by someone who can't use that identity
for whatever reason).
I felt that the n-ary semantics of expt provided the best value
when right associative. It's not something obtainable by a ready
identity, and there is one obvious way to do it.
-- TXR Programming Language: http://nongnu.org/txrCygnal: Cygwin Native Application Library: http://kylheku.com/cygnalMastodon: @Kazinator@mstdn.ca