bug-apl
[Top][All Lists]
Advanced

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

Re: [Bug-apl] Operand Binding Question


From: Juergen Sauermann
Subject: Re: [Bug-apl] Operand Binding Question
Date: Sat, 01 Nov 2014 16:34:17 +0100
User-agent: Mozilla/5.0 (X11; Linux i686; rv:31.0) Gecko/20100101 Thunderbird/31.0

Hi Colin,

thanks for reporting this. Should be fixed in SVN 502.

/// Jürgen


On 10/31/2014 03:17 PM, Colin Verrilli wrote:
Trying this again - It didn't seem to go through the first time...

I'm a newbie to APL2, having played with APL\360 and APL/SV many years ago.
I was trying out some examples with gnu-apl from an old Intro to APL2 manual that I have from 1982.
They give two operators, glue and AND as below.
     
 ⎕cr 'glue'
┏→━━━━━━━━━━━━━━━━━━━━━━━┓
↓z←(f glue l) r          ┃
┃⍝From Intro to APL2, p72┃
┃z←l f r                 ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━┛
      ⎕cr 'AND'
┏→━━━━━━━━━━━━━━━━━━━━━┓
↓z←(f AND g) r         ┃
┃⍝From Intro to APL p72┃
┃z←(f r)(g r)          ┃
┗━━━━━━━━━━━━━━━━━━━━━━┛

Using parenthesis, gnu-apl gives this result which agrees with the book:

            ((*glue 2) AND*) 0 1 2
┏→━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃┏→━━━━┓ ┏→━━━━━━━━━━━━━━━━━━━━━━━━┓┃
┃┃1 2 4┃ ┃1 2.718281828 7.389056099┃┃
┃┗━━━━━┛ ┗━━━━━━━━━━━━━━━━━━━━━━━━━┛┃
┗∊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

But removing parenthesis, gives gnu-apl gives a result that disagrees with the manual in both of these 2 cases. In the manual, the result is always the same as above.

      (*glue 2 AND*) 0 1 2
┏→━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃┏→━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┏→━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓┃
┃┃2 ┏→━━━━━━━━━━━━━━━━━━━━━━━━┓┃ ┃2.718281828 15.15426224 1618.177992┃┃
┃┃  ┃1 2.718281828 7.389056099┃┃ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛┃
┃┃  ┗━━━━━━━━━━━━━━━━━━━━━━━━━┛┃                                      ┃
┃┗∊━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛                                      ┃
┗∊∊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
            *glue 2 AND* 0 1 2
┏→━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃┏→━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┏→━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓┃
┃┃2 ┏→━━━━━━━━━━━━━━━━━━━━━━━━┓┃ ┃2.718281828 15.15426224 1618.177992┃┃
┃┃  ┃1 2.718281828 7.389056099┃┃ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛┃
┃┃  ┗━━━━━━━━━━━━━━━━━━━━━━━━━┛┃                                      ┃
┃┗∊━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛                                      ┃
┗∊∊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

It seems that the array 2 is binding as a left operand to AND rather than as a right operand to glue.
When I force it with these parenthesis, it works as expected.

      (*glue 2) AND* 0 1 2
┏→━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃┏→━━━━┓ ┏→━━━━━━━━━━━━━━━━━━━━━━━━┓┃
┃┃1 2 4┃ ┃1 2.718281828 7.389056099┃┃
┃┗━━━━━┛ ┗━━━━━━━━━━━━━━━━━━━━━━━━━┛┃
┗∊━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
      
If I read the (later 1994 ) APL2 LRM, my understanding is the right operand binding has higher precedence than left operand.
Is there something different in GNU APL? Or is my understanding wrong (which would also mean that something changed in IBM APL2 since 1982) 

Clarification would be appreciated.


reply via email to

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