Hi Otto,

simple answer:
{3} is niladic in GNU APL (since lack of ⍵) and monadic
(why?) in Dyalog et al.

To get the Dyalog behaviour in GNU APL use
{3⊣⍵} instead of {3}:

      {3⊣⍵} ¨⍳5
3 3 3 3 3

That makes the lambda monadic in GNU APL and discards its argument
like Dyalog does. You will get the same SYNTAX ERROR in Dyalog if you
call EACH with a niladic function (except that it can't be a lambda then):

      ⎕FX 'Z←FOO' 'Z←3'
      FOO¨⍳5
SYNTAX ERROR
      FOO¨⍳5
         ∧

I personally believe that there should be no differences between "normal"
defined functions (with ⎕FX or the ∇-editor) and lambda, but that opinion
is not shared unanimously.

Best Regards,
Jürgen


On 1/3/21 2:32 PM, Otto Diesenbacher-Reinmüller wrote:
Dear APLers,

I don't think this is a bug, but intentionally:

Doing f.e.:

{ 3 } ¨ ⍳5

results in gnu-apl to an error:

SYNTAX ERROR
      λ1¨⍳5
      ^  ^

In other APLs, this works just fine, f.e. dyalog (or even april):

      { 3 } ¨ ⍳5
3 3 3 3 3

More general without Each/¨, f.e. 
  { 3 } 55

results in gnu-apl in

3 55

but in dyalog (and others) in

3

What's the background of this different behavior in gnu-apl? I also
couldn't find any hint in IBMs APL2 Reference for this behavior.

br & and many thanks for any hint!

br Otto


Reply via email to