Thanks Dan and Brian I didn't associate a.r.s with atomic representations, so I was stuck at that point. I've skimmed through the gerunds paper and realized it will take more concentration than what I can dedicate while watching my 1 yr old crawl around. It looks like there is good stuff to study in there, much like this e-mail thread. Hopefully later tonight or tomorrow.
The IF and CASE example in the paper caught my eye as I've had to write the scalar oriented way many times and like the look of the gerunds and CASE alternative. v0 =. _20&[ v1=. 0.08 & * v2=. (0.08*20000)&+ @ (0.09&*) @ (-&20000) int=. v0 ` v1 ` v2 ` :5"0 range =. +/@(1000 20000&<:)"0 This section of Learning J covers some of the same concepts: http://www.jsoftware.com/docs/help701/learning/10.htm and helped me translate that into today's J Thanks for the links and new topic to explore. On Sun, Nov 3, 2013 at 3:12 PM, Dan Bron <[email protected]> wrote: > I wrote: >> Bernecky, R., and R.K.W. Hui, Gerunds and >> Representations, APL91, APL Quote Quad, >> Volume 21, Number 4, 1991-08. >> >> http://www.snakeisland.com/gerunds.htm > > Unfortunately, the paper doesn't go into much more detail on the > construction of a.r.s than does the Dic page cited earlier. > > The atomic (boxed, canonical) representation > of an object uniquely represents it, and is either > a boxed identifier (for primitive objects); or a > boxed list of two boxes, the identifier and arguments > (for derived objects). The identifier for > a primitive verb, adverb, or conjunction is simply > (and arbitrarily) its 1- or 2-letter spelling; > the identifiers for a noun, hook, and fork are > 0, 2, and 3, respectively. Arguments are recursively > so represented. User-defined conjunctions > and adverbs (operators) and verbs (functions) > are merely those derived from the definition conjunction > (:), and are, therefore, covered by this > scheme. > > It does, however, go into depth on their motivation and justification. And, > for those of us with a tinge of OCD, it also dispels the mystery of the > heretofore inexplicable gaps in the function codes for `: (which, today, > only takes codes 0, 3, and 6). > > In particular, the paper laid out several function codes absent today. The > full table is: > > g`:0 Abut (same as today, mostly) > g`:1 DO-UNTIL (takes exactly 4 verbs) > g`:3 or g/ Insert (same as today; variously called g`:2 and g`:3 in > the paper) > g`:4 Recursion (takes exactly 4 verbs) > g`:5 IF-THEN-ELSE and CASE (we'd use @. today) > g`:6 MIMD (today's g`:6 is closer to a combination of what the paper > has as g`:57 and g`:59) > g`:57 Hook > g`:59 Fork > > The latter two (57 & 59) have been rationalized & generalized as g`:6 today, > and the original g`:6 can be implemented with a combination of `:0 and " in > today's notation (modulo actual, physical, parallelization). > > -Dan > > PS: For the real wonks, point of historical interest: > > Despite this early paper's assertion that > > User-defined conjunctions and adverbs (operators) > and verbs (functions) are merely those derived from > the definition conjunction (:), and are, therefore, > covered by this scheme. > > At one point, J did have explicit a.r. encodings for user-defined operators. > From the archived documentation at > http://www.cs.trinity.edu/About/The_Courses/cs2322/jdoc/dict/dx005.htm : > > 0 Noun > 2 Hook > 3 Fork > 4 Bonded conjunction > 5 Bident > 6 Trident > 7 Defined operator (pro-adverb or pro-conjunction) > > These extra codes - 5, 6, and 7 - were later removed. In fact, they were all > probably both introduced and removed with the trains table. The trains table > was introduced after the 1991 paper (explaining why it thought : was the > only way to define operators) and removed in J5, taking the vast majority of > bidents, tridents and tacitly defined operators with it, thus rendering > codes 5,6, and 7 obsolete. > > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
