Newsgroups: comp.lang.apl
Path: watmath!watserv1!72740.1026@compuserve.com
From: Bob Hendricks <72740.1026@CompuServe.COM>
Subject: Meaning of Curry in J
Message-ID: <920204044743_72740.1026_EHE37-1@CompuServe.COM>
Sender: root@watserv1.waterloo.edu (Operator)
Organization: University of Waterloo
Date: Tue, 4 Feb 1992 04:47:44 GMT
Lines: 31

I do not understand what is meant by "curry".  In the APL issue of the IBM
Systems Journal (Vol 30, No 4, 1991) there is a paper K. E. Iverson called "A
personal view of APL".  The last example in the paper is:

      table=. / ([`by`]`over`) \
      2 3 4 *table 1 2 3 4 5
+-+------------+
| |1 2  3  4  5|
|-+------------|
|2|2 4  6  8 10|
|3|3 6  9 12 15|
|4|4 8 12 16 20|
+-+------------+

(In the paper there is typography error making the second and fourth accent
marks look like quote marks.)

In the notation of "ISI Dictionary of J", section II(F)(b&c), 
the expression 

      *table                      is     x(adv1 (nv conj) adv2) 

Clearly, for the correct result to obtain, the following must be true:

      x (adv1 (nv conj) adv2)     is     (nv conj (x adv1)) adv2

But what happens to make it so?  Can anyone explain curry in the context of
this example, perhaps by showing how the stack is processed?

Bob Hendricks

