Hi Jay,

I see. Maybe I misunderstood Louis,s email from last Saturday completely?
The way I read this email was that in Dyalog APL version 15 you can have
a monadic condition function G in F⍣G . Quote from the email:


The Dyalog 15.0 manual states that the power operator can take a
function right argument. In this case, that function can be
either monadic or dyadic, and can be a lambda.
If it’s monadic:

  (F⍣G) ⍵  ←→  ⍵ ←   F ⍵  until          G ⍵
⍺ (F⍣G) ⍵  ←→  ⍵ ← ⍺ F ⍵  until          G ⍵

If it’s dyadic:

  (F⍣G) ⍵  ←→  ⍵ ←   F ⍵  until  (  F ⍵) G ⍵
⍺ (F⍣G) ⍵  ←→  ⍵ ← ⍺ F ⍵  until  (⍺ F ⍵) G ⍵

(Note that G is checked before the first time F is executed.)

I don't know if that statement is correct or not, but if it is then I would prefer to not
introduce this "monadic case" in GNU APL for the reasons explained earlier.

Thanks,
Jürgen


On 08/15/2016 10:16 AM, Jay Foad wrote:
On 13 August 2016 at 13:05, Juergen Sauermann <[email protected]> wrote:
In "Mastering Dyalog APL" I haven't found the monadic case for the right function argument
G of the power operator. In that book G seems to be always dyadic. So the monadic case looks
like a new Dyalog invention. And, if it is defined like you say, IMHO not the ultimate wisdom.

There is no "monadic case". G is always applied dyadically, and if it happens to be a strictly monadic function then you'll get a SYNTAX ERROR:

      ⎕FX'r←g y' 'r←g>10' ⍝ g is strictly monadic
      2 g 4 ⍝ applying it dyadically gives an error
SYNTAX ERROR
      (+⍨⍣g)1 ⍝ power operator tries to apply g dyadically
SYNTAX ERROR

In general, Dyalog APL never examines a function operand to see whether it is monadic or dyadic, in order to treat them differently.

Jay.

Reply via email to