bug-apl
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: APL2 Compatibility


From: Dr . Jürgen Sauermann
Subject: Re: APL2 Compatibility
Date: Mon, 30 Nov 2020 15:20:17 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0

Hi Jay,

I see, thanks. I was thinking of the table "NAME AND SYMBOL BINDING"
on page 21 and repeated on page 34. It uses the neutral term "left operand"
without being specific whether that operand is a value, a function or an operator.

I read the sentence you quote somewhat differently. Not in the sense that
one operator cannot be the left or operand of another operator but rather that the
binding rules concerning operands of operators shall not apply if an operand is
itself an operator. The example that follows wisely excluded the case where
an operator like / could also be evaluated as a function.

I believe the sentence is equivalent to saying, in parser terms, that OP OP shall
be shifted rather than being reduced. That will unfortunately create more derived
functions, but these cases are so rare that that will not matter. I will therefore
see what happens if I remove all parser reductions with adjacent operators
from the phrase table of GNU APL and see if that causes new problems
(I suppose at least some automatic testcases will fail).

Best Regards,
Jürgen


On 11/30/20 1:25 PM, Jay Foad wrote:
My

1 / / 1 1 ⍴ 1

example was only meant to demonstrate that in APL2 an operator can have
another operator (in this case itself) as left argument. And in that case binding
the leftmost 1 to the left / operator would be, at least IMHO and referring only
to the language reference manual, as valid as binding the left / operator to the
right / operator.
I don't think so. See the discussion of "Name and Symbol Binding"
starting on p33, and in particular on p35:

"There is no binding between operators. In the _expression_ ,¨/ catenate binds as
left operand to the each operator, and then the derived function ,¨
binds as left
operand to the slash operator."

Jay.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]