HDTenEightyP/NetNews huggingface dataset:
From: sam@csi.jpl.nasa.gov (Sam Sirlin)
Subject: standards
Originator: sam@kalessin
Organization: Jet Propulsion Laboratory, Pasadena, CA
Date: Thu, 23 Jul 1992 23:09:51 GMT


I noticed that the current draft ANSI/ISO APL standard is available
from gatekeeper.dec.com in pub/plan/apl/aplpd4.ps. It's dated January
1992. Comments are to be sent to apl-stds@watmath.waterloo.edu. 

I just got it and so haven't read it yet, but judging from recent
comments some of us have a few things to say to the commitee.

-- 
Sam Sirlin
Jet Propulsion Laboratory         sam@kalessin.jpl.nasa.gov

Newsgroups: comp.lang.apl
From: vpcsc4@sfsuvax1.sfsu.edu (Emmett McLean)
Subject: while & break statements in J (example using simplex algorithm)
Organization: San Francisco State University
Distribution: NA
Date: Wed, 29 Jul 1992 01:03:14 GMT

I could use help coding a while statement and installing a break.
(This a bare bones version of the simplex algorithm.)

If 
   t =. 0 0 $''
   t =. t, ' bvc =. </\ (<./, {. y. ) = , {. y.'
   t =. t, ' d   =. , (, _1 {."1 y.) % factors =., bvc #"1 y. '
   t =. t, ' bvr =. </\ (>./ d ) = d '
   t =. t, ' factors =. factors % pivot=.'''' $ bvc# , bvr#"2 y.'
   t =. t, ' factors =. ((<: % ]) pivot ) (bvr# i. $ bvr) } factors'
   t =. t, ' y. =. y. -  |: ($ |: y.)  $ , (, bvr#"2 y. ) *"(0 1) factors'
   interation =. t : ''


I want like a function simplex 
where simplex executes 'y. =. interation y.' so long as
the first ((,$}.a) - 1) elements have a negative number.
The psuedo code would be :

   while ( 0> (( <./ , _1}. {. y. )
   y. =. interation y.

Any suggestions?  <>

Also, how could t be changed to include a conditional break
as shown below:

   t =. 0 0 $''
   t =. t, ' bvc =. </\ (<./, {. y. ) = , {. y.'
   t =. t, ' d   =. , (, _1 {."1 y.) % factors =., bvc #"1 y. '
   t =. t, ' bvr =. </\ (>./ d ) = d '
   t =. t, ' factors =. factors % pivot=.'''' $ bvc# , bvr#"2 y.'

if (*./ 0 > bvc#factors ) then break

   t =. t, ' factors =. ((<: % ]) pivot ) (bvr# i. $ bvr) } factors'
   t =. t, ' y. =. y. -  |: ($ |: y.)  $ , (, bvr#"2 y. ) *"(0 1) factors'
   intrn =. t : ''

Thanks,
Emmett
vpcsc4@sfsuvax1.sfsu.edu
From: andrew@rentec.com (Andrew Mullhaupt)
Newsgroups: comp.lang.apl
Subject: Re: SIGNUM of teaching numerical methods
Date: 24 Jul 92 23:15:09 GMT
Organization: Renaissance Technologies Corp., Setauket, NY.

In article <1992Jul23.050113.20216@yrloc.ipsa.reuter.COM> rbe@yrloc.ipsa.reuter.COM (Robert Bernecky) writes:
>In article <1089@kepler1.rentec.com> andrew@rentec.com (Andrew Mullhaupt) writes:
>>No. Having talked to the people who implement it, they maintain that they
>>are constrained by the language spec. (And why shouldn't they be?)
>
>This is baloney. (Bullshit in our terms): It is, first of all,
>IRRELAVENT to the language spec as to HOW something is implemented.

Not in this case. The language spec is the problem since it's an execution
model, (i.e. it prescribes the semantics). Now (with the possible exception
of the VDL spec for PL/I) I think that this is a mistake. But there it is.

>Semantics is all. It is TRIVIAL to implement a language such as Splus
>such that it avoids copying arguments except when a callee tries to tinker
>an argument by modifying it. 

Yes. Everybody knows about reference counting. Except Bell Labs...

>This is not experimentation, since it's been done for 20 years or more.

Only in intelligent implementations. S has a stupid implementation, which
I believe is due to it's bad choice of spec.

Later,
Andrew Mullhaupt
Newsgroups: comp.lang.apl
From: qmdbms@gsusgi2.gsu.edu (Brian Schott)
Subject: J table question
Organization: Georgia State University
Date: Thu, 23 Jul 1992 14:48:20 GMT

I am trying to create a table which has the result 1 if x is 0 
and the lesser of 1 and y%x otherwise.  My scheme is to set this
up as an agenda construct with the selection of the index 
determined by whether the left argument x equals 0.  So my idea
is 
gerund @. selection 
where "selection" is [/ .

But I am running into a problem because the result of x [/ y
is a vector, not a table.  That surprises me since x */ y
is a table.  Is this as it should be in J?

BTW my vector arguments are all fractions  0<=x,y<=1.


-- 
Brian Schott/Decision Sciences Dept.             qmdbms@gsusgi2.gsu.edu
College of Business Administration                         404-651-4070
Georgia State University                  interests: approx. reasoning,
Atlanta, Georgia USA 30303-3083     (B=)       decision support systems
From: andrew@rentec.com (Andrew Mullhaupt)
Newsgroups: comp.lang.apl
Subject: Re: SIGNUM of teaching numerical methods
Date: 24 Jul 92 23:06:59 GMT
Organization: Renaissance Technologies Corp., Setauket, NY.

In article <1992Jul23.045513.20017@yrloc.ipsa.reuter.COM> rbe@yrloc.ipsa.reuter.COM (Robert Bernecky) writes:
>In article <1088@kepler1.rentec.com> andrew@rentec.com (Andrew Mullhaupt) writes:
>I think Andrew's reply is entirely correct, based on my following of
>supercomputer conferences over the past years, and my experience as an
>APL designer and implementor. 
>
>In particular:

	[Problems with APL philosophy deleted...]

>Now, having said that, I STILL think that APL has its place in 
>supercomputing. It does have, or will have, its place, in the following
>sense:

>a. WHEN APL code can compete in loopy-type stuff, with Fortran,
>   many arguments against APL will vanish.

Yes. And what I _really_ want to know is why is this not a problem which
has been solved ten years ago?

>b. When APLers admit the existence of data bases which are updated
>   concurrently from a number of places, then problems such as 
>   parallel computed differential equations fall out nicely.

Agree. In fact the strongest programmer I know regards anything where you
don't have asynchronous parallelism as trivial. He's probably in some sense
right.

>c. When APL is JACL (Just Another Computer Language), and you can
>   call APL from Fivetran and vice versa, then the problem we face today
>   of Language Arrogance will vanish.

Paradoxically, the less you will be forced to do in post-APL, the less you will
avoid it. The less religion is required before using post-APL, the more popular
it will be.

Now my desiderata are on the table. I think you can take APL as a starting
point and get to the promised land. (Else why would I keep involved in
comp.lang.apl?)

I may be wrong, but I think (based on my very limited exposure) that J does
not go in the direction I'm pointing in. So from where I sit the field is
vacant in the search for post-APL.

All the APL "wanna-be's" tend to be far less considered language designs,
and perhaps the big threat is some kind of compiled Lisp, but I doubt it.

So where do we go from here?

Later,
Andrew Mullhaupt
Newsgroups: comp.lang.apl
From: hui@yrloc.ipsa.reuter.COM (Roger Hui)
Subject: Re: Question On Verb Rank
Organization: Iverson Software Inc.
Date: Sat, 25 Jul 92 05:40:00 GMT

Tom Affinito writes regarding the monadic rank of + and other scalar fns.

Welcome back, Tom.  Assigning rank 0 or rank _ to the monad + (and - others 
of like ilk) makes no difference (produces the same result) when the verb
per se is applied to an argument, but unbounded rank makes for more
intuitive behaviour when the verb is composed with others.  For example,
 
   ss =. +/@*:     NB. sum of squares
 
The property stated in your msg, that "verb rank is supposed to represent
the natural shape of the verb's arguments, and that higher dimension data
will get automatically sliced by the verb into units of the verb's rank",
is a consideration, but not the only one, in deciding what rank to assign.
As always, if a rank different from the assigned rank is required, the rank
conjunction (") can be used.

------------------------------------
Roger Hui, Iverson Software Inc., 33 Major Street, Toronto, Ontario  M5S 2K9
Phone: (416) 925 6096;  Fax: (416) 488 7559
Newsgroups: comp.lang.apl
From: trirex!taff@uunet.uu.net (Tom Affinito)
Subject: Re: J table question
Reply-To: trirex!taff@uunet.uu.net
Organization: Trirex Systems Inc.
Distribution: na
Date: Fri, 24 Jul 1992 14:57:09 GMT

In article <qmdbms.711902900@gsusgi1.gsu.edu> qmdbms@gsusgi2.gsu.edu  
(Brian Schott) writes:
> But I am running into a problem because the result of x [/ y
> is a vector, not a table.  That surprises me since x */ y
> is a table.  Is this as it should be in J?
> 

I think this is a verb rank question.  Try 
x ["0 0 / y
and you'll get a table.  / uses the inserted verb's rank to determine the  
cells that are inserted-between (sic).  * has a dyadic rank of (0 0), so  
the numbers are inserted-between and you get a table.  ] is dyadic rank (_  
_), so the lists themselves are the units that are inserted-between.  The  
rank conjunction in the above sentence changes all that.

[of course until someone tells me why * has a monadic rank of _ I don't  
REALLY understand verb rank!]
tentatively,
Tom
trirex!taff@uunet.uu.net
Newsgroups: comp.lang.apl
From: rbe@yrloc.ipsa.reuter.COM (Robert Bernecky)
Subject: Re: SIGNUM of teaching numerical methods
Reply-To: rbe@yrloc.ipsa.reuter.COM (Robert Bernecky)
Organization: Snake Island Research Inc, Toronto
Date: Thu, 23 Jul 92 04:55:13 GMT

In article <1088@kepler1.rentec.com> andrew@rentec.com (Andrew Mullhaupt) writes:
>In article <ROCKWELL.92Jul18201144@socrates.umd.edu> rockwell@socrates.umd.edu (Raul Deluth Miller-Rockwell) writes:

I have deleted the entire contents of Andrew's reply to Raul...

I think Andrew's reply is entirely correct, based on my following of
supercomputer conferences over the past years, and my experience as an
APL designer and implementor. 

In particular:

a. APLers' view that you can always reinvent the wheel, (in fact: SHOULD 
   reinvent the wheel) is dumb. It denies competence (in the sense that
   others may have a better algorithm than you, or have more numerical
   analysis sense than you), as well as denying the idea that someone
   may have taken a LOT of time to do something which you would be ill-
   advised to do again without GOOD cause (write a Phong rendering program).

b. APLers' view that everything is dense arrays, and/or everything is
   done without globals or loops. The reality of large scale computing
   says very much the opposite.

c. APLer's view that performance is for wimps. Try computing weather 
   or climate in the Best Possible Code. Now do it again in APL. 
   See you later.

APLers who deny that the above ARE problems, or that they are SERIOUS
problems, are being naive or stupid. Take your pick.

Now, having said that, I STILL think that APL has its place in 
supercomputing. It does have, or will have, its place, in the following
sense:

a. WHEN APL code can compete in loopy-type stuff, with Fortran,
   many arguments against APL will vanish.

b. When APLers admit the existence of data bases which are updated
   concurrently from a number of places, then problems such as 
   parallel computed differential equations fall out nicely.

c. When APL is JACL (Just Another Computer Language), and you can
   call APL from Fivetran and vice versa, then the problem we face today
   of Language Arrogance will vanish.

Bob

Robert Bernecky      rbe@yrloc.ipsa.reuter.com  bernecky@itrchq.itrc.on.ca 
Snake Island Research Inc  (416) 368-6944   FAX: (416) 360-4694 
18 Fifth Street, Ward's Island
Toronto, Ontario M5J 2B9 
Canada
From: andrew@rentec.com (Andrew Mullhaupt)
Newsgroups: comp.lang.apl
Subject: Re: Dead horse matrix reduction
Date: 27 Jul 92 20:01:12 GMT
Organization: Renaissance Technologies Corp., Setauket, NY.

In article <3j0mbfps@csv.warwick.ac.uk> strgh@warwick.ac.uk (J E H Shaw) writes:
>Unfortunately, the literature (even the `statistical' literature) isn't
>the place to look for an honest answer; a while ago I submitted a paper
>on efficient parallel generation (in APL) of quasirandom sequences
>(Sobol's LP\tau sequence etc.) to the SIAM J. of Scientific & Statistical
>Computing.  I think an APL or similar implementation gives valuable
>insights into the structure of such sequences (and is pretty efficient),
>but the paper was immediately rejected with a comment to the effect that
>they aren't interested in APL.

But this is pretty normal from my point of view - the stat literature is not
really interested in APL, _or any other language_. If I wrote an article on
how you can do ANOVA in a novel way using say, Prolog, I would expect the
same treatment. In order to care about my advance, a statistician would have
to learn Prolog first. If I can't explain this method without Prolog, I
will expect to be able to justify it's use by a number of very significant
advances in the theory, or I will expect rejection. 

When it is important to put algorithms in the literature, it is usually
important to present them in an essentially mathematical form. Take for
example the power of two FFT, where you pick bits. Look this up in the
literature, and you will _not_ find bitwise operators from C, FORTRAN, (and
no hope you will see little up and down thorns strewn about, either). You
will normally find that the manipulations are represented by means of 
functions defined using 2^k, a bit reversal permutation, etc. The reason
for this is that if the algorithm is not dependent on a particular language
then it's presentation (especially in those journals which value posterity)
should be free of reference to a language. If it depends critically on a
language then you have to worry about what this algorithm will mean after
the language is obsolete.

I believe that there is some merit to the idea that a truly superior scientific
language _would_ get more ink in the serious literature, and the lack of such
ink just proves my point that there isn't any such computer language around
today.


Later,
Andrew Mullhaupt
Newsgroups: comp.lang.apl
From: vpcsc4@sfsuvax1.sfsu.edu (Emmett McLean)
Subject: More J Questions : About do (".) and tracing (1!: 2&2)
Organization: San Francisco State University
Distribution: NA
Date: Wed, 29 Jul 1992 21:46:20 GMT

1. In some versions of APL there is an "execute" instruction which
   does provides for conditional execution contingent on the value
   of a boolean variable.  The equivalent in J looks like it is the
   ". (do) instruction.

   If foo and boolean_var are as shown, what is the syntax for the
   conditional execution of foo?

   a   =. 1
   foo =. 'a =. a*3'
   b_v =. 1 

   Something like
   (b_v#1)(".foo)  ( This always executes foo but I
                     hope it communicates the idea)

2. This should be easy. What is J's equivalent to APL's []TRAP ?

3. How would I step through the (LU factorization) routine below using
   1!:1&2 ? I've tried trace =. ('1!:1&2 ', "1 m) : ''  but get a
   domain error when I type "trace a".

   s=. a =. 4 4 $ 1 3 5 2 3 6 9 12 15 18 21 24 27 1 3 5
   m=. 0 0 $''''
   m =. m, ' l =. u =. 0 0 $ '''''
   m =. m, ' i =. 0'
   m =. m, ' n =. ''''$ $ {. y. '
   m =. m, 'loop)'
   m =. m, ' l   =. l, < (i # 0 ) , 1, f =. }. ({."1 y.) % ({. {. y.)'
   m =. m, ' u   =. u, < (i # 0 ) ,{.y.'
   m =. m, ' y.  =. (}."1 }. y.) - (}.{.y.)*"(1 0) f'
   m =. m, ' i   =. >: i'
   m =. m, ' $.=. ((i<n)#loop),end'
   m =. m, 'end)'
   m =. m, ' y.  =. ( < |: >,l ), (< >,u) '
   lu =. m : ''
   
   lu
+---------------------------------------------------------+-++
| l =. u =. 0 0 $ ''                                      |:||
| i =. 0                                                  | ||
| n =. ''$ $ {. y.                                        | ||
|loop)                                                    | ||
| l   =. l, < (i # 0 ) , 1, f =. }. ({."1 y.) % ({. {. y.)| ||
| u   =. u, < (i # 0 ) ,{.y.                              | ||
| y.  =. (}."1 }. y.) - (}.{.y.)*"(1 0) f                 | ||
| i   =. >: i                                             | ||
| $.=. ((i<n)#loop),end                                   | ||
|end)                                                     | ||
| y.  =. ( < |: >,l ), (< >,u)                            | ||
+---------------------------------------------------------+-++
From: sam@csi.jpl.nasa.gov (Sam Sirlin)
Newsgroups: comp.lang.apl
Subject: Re: J table question
Date: 23 Jul 92 21:01:30 GMT
Organization: Jet Propulsion Laboratory, Pasadena, CA
Originator: sam@kalessin


In article <qmdbms.711902900@gsusgi1.gsu.edu>, qmdbms@gsusgi2.gsu.edu (Brian Schott) writes:
|> But I am running into a problem because the result of x [/ y
|> is a vector, not a table.  That surprises me since x */ y
|> is a table.  Is this as it should be in J?

Check out the ranks. I think x ["0 / y produces the table you want.
   1 2 [/3 4
1 2
   1 2 ["0 / 3 4
1 1
2 2
-- 
Sam Sirlin
Jet Propulsion Laboratory         sam@kalessin.jpl.nasa.gov
From: taff@kate (Tom Affinito)
Subject: Question On Verb Rank
Reply-To: trirex!taff@uunet.uu.net
Organization: Trirex Systems Inc.
Distribution: na
Date: Thu, 23 Jul 1992 14:25:21 GMT

I'm trying to get the verb rank idea under my belt, but I'm having some  
trouble.  Starting with what used to be called the "scalar functions" in  
APL, I notice that + has a rank of (_ 0 0).  I would have thought that +  
would be (0 0 0), in that it applies to scalars monadically and  
dyadically.  I understand how , has a monadic rank of _ but not why + does  
too.  Similarly, why does j. and many others have a monadic rank of _ ?

I am using J Dictionary Version 4, and my understanding of verb rank is  
coming through particular attention to the last paragraph on page 3 and  
its continuation on page 4.  I believe that verb rank is supposed to  
represent the natural shape of the verb's arguments, and that higher  
dimension data will get automatically sliced by the verb into units of the  
verb's rank.  Since + always applies to individual numbers and extends  
across lists and tables, I would believe that + should monadically have a  
rank of 0.

Can anyone offer guidance on this point?

Thanks!
Tom Affinito
trirex!taff@uunet.uu.net
From: hui@yrloc.ipsa.reuter.COM (Roger Hui)
Subject: Re: Problem with J5 (PC)
Organization: Iverson Software Inc.
Date: Mon, 27 Jul 92 14:52:24 GMT

Peter J. Petto writes regarding domain errors in 2!:2 (save) and 2!:4 (copy).
 
2!:2 has a bug; 2!:4 would work on any correctly saved workspace but fails 
on workspaces saved by the incorrect 2!:2.  These and some other bugs will 
be fixed in J5.1 expected to be released shortly.

------------------------------------
Roger Hui, Iverson Software Inc., 33 Major Street, Toronto, Ontario  M5S 2K9
Phone: (416) 925 6096;  Fax: (416) 488 7559
Newsgroups: comp.lang.apl
From: trirex!taff@uunet.uu.net (Tom Affinito)
Subject: Meaning of x 6!:2 in J version 5
Reply-To: trirex!taff@uunet.uu.net
Organization: Trirex Systems Inc.
Distribution: na
Date: Fri, 24 Jul 1992 17:14:11 GMT

I was examining what was added to version 5, and besides the performance  
improvements, bug fixes, and more extensive use of the tolerance  
conjunction (btw, thanks for all of that ISI!), the one new feature that  
stood out was the dyadic form of 6!:2.

Unfortunately this is not described in the xenos.doc, but through  
experimentation it appears to time the y string x number of times and  
returns the average time.

ie, 1 2 100 (6!:2) '2 + 3'
0 0.007812 0.002031

which I'm interpreting to mean what is the time to run the expression  
once, what is the average time it took when running it twice and dividing  
by two, and what is the average time it took to execute in a test run of  
100 executions

Can anyone confirm or correct this interpretation?

Thanks!
Tom Affinito
trirex!taff@uunet.uu.net
Newsgroups: comp.lang.apl
From: ppetto@wariat.org (Peter J. Petto)
Subject: Problem with J5 (PC)
Organization: Akademia Pana Kleksa, Public Access Uni* Site
Date: Sat, 25 Jul 1992 13:48:47 GMT

I'm having problems using the foreign conjunctions for workspaces:
save (2!:2) and copy (2!:4) with the latest PC implementation of J
(version 5).  When invoked, I get domain errors.

Has anyone else had this same problem?  Have there been any spelling
changes that would cause this?

[I apologize if you have seen this post before -- this is my third
try to get it onto the net.  I have accounts on several machines and
so far haven't seen it anywhere other than on the machine where I
post it.  Funny, I never had problems before.  I guess when problems
occur, they occur in non-scalar arrays! <grin>]

---
Peter Petto          |       ppetto@ncoast.org
Bay Village, Ohio    |    73125.617@compuserve.com

Newsgroups: comp.lang.apl
From: rbe@yrloc.ipsa.reuter.COM (Robert Bernecky)
Subject: Re: SIGNUM of teaching numerical methods
Reply-To: rbe@yrloc.ipsa.reuter.COM (Robert Bernecky)
Organization: Snake Island Research Inc, Toronto
Date: Sat, 25 Jul 92 19:57:09 GMT

In article <1104@kepler1.rentec.com> andrew@rentec.com (Andrew Mullhaupt) writes:
>In article <ROCKWELL.92Jul21093324@socrates.umd.edu> rockwell@socrates.umd.edu (Raul Deluth Miller-Rockwell) writes:
>>Andrew Mullhaupt:
>
>>Having never seen 'a', and having no way to access it, I really can't
>>agree or disagree on this one.  Keeping a language secret does have a
>>certain advantage -- no one else is going to use it.  But, it does
>>have a disadvantage -- no one else is going to use it.  You makes your
>>choices...
>
>'a' is not a secret, otherwise I couldn't have told you about it. There are
>papers in the APL literature by Whitney and some others explaining it. You
>just can't have it. You _are_ allowed to know about it...

Umm, please supply at least ONE specific reference to "a" which exists
in the literature. I have NEVER seen any such reference, and have never
seen a reference manual or other book which would tell me anything 
concrete about "a". In particular, the APL Conference Proceedings
from 1986-1992 contain not a single article by Whitney.

Furthermore, I have not seen anything more formal presented by Arthur
Whitney at conferences than a few foils, and claims about performance
which, although perhaps true, tend to reflect best case, rather than
worst case, performance. A typical one of these is: "I have a linear
sort algorithm". In fact the sort is a radix sort, which often performs
quite well, but which has n*2 worst case performance.

So, I'm STILL waiting to see Real Documentation.

Bob





Robert Bernecky      rbe@yrloc.ipsa.reuter.com  bernecky@itrchq.itrc.on.ca 
Snake Island Research Inc  (416) 368-6944   FAX: (416) 360-4694 
18 Fifth Street, Ward's Island
Toronto, Ontario M5J 2B9 
Canada
Newsgroups: comp.lang.apl