Hello

Sorry for opening a new post above, I did not realize this was already
being discussed here.

I'm far from being an APL expert, but I humbly believe the current behavior
to be a bug. Consider this expression, where A and B are arrays (or
scalars):

      A F / B

If F is a function, then / should perform N-wise reduction (ISO 13751
§9.2.3, shown being used without parentheses.) But if F is an array, then A
F is a nested array and / should perform the replicate function (§10.2.5,
again shown being used without parentheses.)

I'm not sure if the ambiguity inherent in the symbol / (and others) is
mentioned anywhere in the standard. But I'm quite sure other APL
implementations solve the issue by always treating / and other such symbols
as operators.

When such an operator receives an array as the left operand it will perform
replication; otherwise it will perform reduction.

This is also the only way an APL programmer may define a symbol like that,
because a given name may only be defined to be either a function or an
operator, not both.

Tobia


On Thu, Nov 27, 2014 at 10:56 AM, Jay Foad <jay.f...@gmail.com> wrote:

> Hi Jürgen,
>
> Thanks for doing the analysis.
>
> > 2. Alternatives
> > ---------------------
> >
> > I have tested what happens if we would introduce a M M pattern into GNU
> APL
> > in order to
> > get IBM APL2's behavior.
>
> I don't understand this bit. Monadic operators don't bind like this in
> APL2.
>
>  Surely the way to get APL2 behaviour is:
> - never downgrade / to a function
> - introduce an A M pattern to allow operators to have arrays as left
> operands
>
> Jay.
>
>

Reply via email to