It's so much that J has been redefining programming terms, but that those programming terms are usually taken to mean something different from what J does.
(Also, if you look closely, a lot of those terms are themselves re-definitions of what used to mean something different.) I do not have an easy solution for this, but spending half an hour a day on exercises (from j labs, tutorials, etc) can help a great deal. Asking help here, like you have been doing, is also a great approach. A related issue, though, is that you should often expect to find some undiscovered "hidden thing" while exploring the language. Sometimes it will be features of a primitive like this one, other times it will be a new approach or way of combining things. On a related note, nothing worth doing is ever easy (otherwise, it would be done already). -- Raul On Tue, Nov 8, 2016 at 11:22 AM, Skip Cave <[email protected]> wrote: > Henry, > > Yes, I did see that part of the curlylf page. However, I was looking for a > discussion of the pattern <<< and I didn't see it there. In fact, when I > searched for the text "<<<" on the J Software site, I got zero hits. Well, > I did get hits, but when I went to the link, there was never the <<< > pattern. > > I also searched for the word "except" which gave me 373 hits on the J > Software site, more than I wanted to check. However, the top result did > link to the curlylf page, but again with no <<<. > > Unfortunately, this experience is all too common for me as I try to learn > J. J's re-defining of the semantics of programming terms makes it difficult > to use word searches on the J Software site to discover how to create a > specific function that I want to implement. > > Skip > > Skip Cave > Cave Consulting LLC > > On Tue, Nov 8, 2016 at 6:25 AM, Henry Rich <[email protected]> wrote: > >> Did you look at >> >> http://code.jsoftware.com/wiki/Vocabulary/curlylf#Complement >> ary_Indexing_and_Omitted_Axes >> >> ? It describes this, including pictures of selectors that produce various >> results. >> >> Henry Rich >> >> On 11/8/2016 3:27 AM, Skip Cave wrote: >> >>> Rob, >>> >>> Thanks. 'Except' is a very useful tool to keep in my toolbox. Frankly, I >>> think there needs to be a wiki page on the J Software site dedicated to >>> exploring this option in more depth. I would have never found out about >>> this if Raul hadn't pointed it out >>> >>> The idea is touched on briefly in the page Raul pointed out >>> <http://www.jsoftware.com/help/dictionary/d520.htm>, and also hinted at >>> briefly on the 'from' vocabulary page >>> <http://code.jsoftware.com/wiki/Vocabulary/curlylf>, but I think the >>> >>> subject needs much more explanation. A search for 'except' on the J >>> software site should lead one to a page full of examples as the top search >>> result. The examples should start very simply, and gradually show more & >>> more complex options. >>> >>> Skip >>> >>> Skip Cave >>> Cave Consulting LLC >>> >>> On Tue, Nov 8, 2016 at 2:08 AM, Rob Hodgkinson <[email protected]> wrote: >>> >>> Hi Skip, >>>> >>>> 2 3 ((<@<@<@[){]) 1 2 3 4 5 >>>> 1 2 5 >>>> >>>> ex=:(<@<@<@[){] >>>> 2 3 ex 1 2 3 4 5 >>>> 1 2 5 >>>> >>>> Rob >>>> >>>> >>>> On 8 Nov. 2016, at 5:44 pm, Skip Cave <[email protected]> wrote: >>>>> >>>>> Aha! except! I had no idea that from '{' had such a useful option. >>>>> >>>>> (<<< 1 4 5 7) { 2 3 5 7 11 14 56 78 95 >>>>> >>>>> 2 5 7 56 95 NB. Cool! >>>>> >>>>> >>>>> >>>>> If i wanted to make a dyadic verb 'ex' that worked just like the above, >>>>> >>>> how >>>> >>>>> could I do that? >>>>> >>>>> >>>>> 1 4 5 7 ex 2 3 5 7 11 14 56 78 95 >>>>> >>>>> 2 5 7 56 95 >>>>> >>>>> >>>>> >>>>> ex =: [:@<@<@<[{] >>>>> >>>>> 2 3 ex 1 2 3 4 5 >>>>> >>>>> |index error: ex >>>>> >>>>> | 2 3 ex 1 2 3 4 5 >>>>> >>>>> >>>>> Nope! that didn't work. >>>>> >>>>> >>>>> Skip >>>>> >>>>> Skip Cave >>>>> Cave Consulting LLC >>>>> >>>>> On Tue, Nov 8, 2016 at 12:32 AM, Raul Miller <[email protected]> >>>>> >>>> wrote: >>>> >>>>> 2 { 2 3 5 7 11 >>>>>> 5 >>>>>> (<<<2) { 2 3 5 7 11 >>>>>> 2 3 7 11 >>>>>> >>>>>> Look for the word "except" at http://www.jsoftware.com/help/ >>>>>> dictionary/d520.htm >>>>>> >>>>>> Thanks, >>>>>> >>>>>> -- >>>>>> Raul >>>>>> >>>>>> >>>>>> On Tue, Nov 8, 2016 at 12:17 AM, Skip Cave <[email protected]> >>>>>> wrote: >>>>>> >>>>>>> Nice! Xiao-Yong's verb does exactly what I need. >>>>>>> >>>>>>> f=:(] +:@{`[`]} <@<@<@]{[)"_ 0 [:I.2=/\] >>>>>>> >>>>>>> t =. 1 2 2 4 1 5 3 4 4 4 2 3 3 >>>>>>> >>>>>>> f t >>>>>>> >>>>>>> 1 4 4 1 5 3 4 4 4 2 3 3 >>>>>>> >>>>>>> 1 2 2 4 1 5 3 8 4 2 3 3 >>>>>>> >>>>>>> 1 2 2 4 1 5 3 4 8 2 3 3 >>>>>>> >>>>>>> 1 2 2 4 1 5 3 4 4 4 2 6 >>>>>>> >>>>>>> >>>>>>> I can understand [:I.2=/\]. Using I. is the perfect way to find the >>>>>>> indices of the dups. However, the rest of that big infinite-rank tacit >>>>>>> expression to the left must generate each of the reduced items. I'm >>>>>>> >>>>>> totally >>>>>> >>>>>>> lost trying to figure that out. Why the zero? Why three <@? I thought >>>>>>> [ >>>>>>> represented a left argument, but there isn't a left argument. Any help >>>>>>> >>>>>> is >>>> >>>>> appreciated. >>>>>>> >>>>>>> >>>>>>> Skip >>>>>>> >>>>>>> Skip Cave >>>>>>> Cave Consulting LLC >>>>>>> >>>>>>> On Mon, Nov 7, 2016 at 10:25 PM, Xiao-Yong Jin <[email protected] >>>>>>> > >>>>>>> wrote: >>>>>>> >>>>>>> So you probably just need this: >>>>>>>> f=:(] +:@{`[`]} <@<@<@]{[)"_ 0 [:I.2=/\] >>>>>>>> or really the adverb >>>>>>>> a=:1 :'u@(] +:@{`[`]} <@<@<@]{[)"_ 0 [:I.2=/\]' >>>>>>>> >>>>>>>> You may find different solutions if you abstract your problem >>>>>>>> >>>>>>> differently. >>>>>> >>>>>>> On Nov 7, 2016, at 9:30 PM, Skip Cave <[email protected]> >>>>>>>>> >>>>>>>> wrote: >>>>>> >>>>>>> Very interesting. Quite a difference in space and time usage, not to >>>>>>>>> mention length of the tacit code. >>>>>>>>> >>>>>>>>> For my application, a rank 0 or 1 in the summed result isn't all >>>>>>>>> that >>>>>>>>> critical. As long as the contents of each box can be used in further >>>>>>>>> arithmetic and Boolean operations (e.g. it's not text), then I'm ok. >>>>>>>>> >>>>>>>>> >>>>>>>>> It looks like nouns with ranks 0 or 1 don't affect the outcome of >>>>>>>>> >>>>>>>> simple >>>>>> >>>>>>> arithmetic operations: >>>>>>>>> >>>>>>>>> >>>>>>>>> ($4);($,4);(4=,4);(1+4);(1+,4);((1+4)=1+,4);($1+4);($1+,4) >>>>>>>>> >>>>>>>>> ┌┬─┬─┬─┬─┬─┬┬─┐ >>>>>>>>> >>>>>>>>> ││1│1│5│5│1││1│ >>>>>>>>> >>>>>>>>> └┴─┴─┴─┴─┴─┴┴─┘ >>>>>>>>> >>>>>>>>> The only time the difference becomes an issue: >>>>>>>>> >>>>>>>>> ($4)=($,4) >>>>>>>>> >>>>>>>>> |length error >>>>>>>>> >>>>>>>>> | ($4) =($,4) >>>>>>>>> But I don't care about this. >>>>>>>>> >>>>>>>>> Actually, Mike Day spotted what I was really trying to attempt. >>>>>>>>> The original starting vector is: >>>>>>>>> >>>>>>>>> n =: 1 2 2 4 1 5 3 4 4 4 2 3 3 >>>>>>>>> >>>>>>>>> Then I box at each possible pair of integers using an infix >>>>>>>>> >>>>>>>> sliding-window >>>>>>>> >>>>>>>>> on each pair of integers. This sliding box scheme was just to >>>>>>>>> >>>>>>>> identify >>>> >>>>> all >>>>>>>> >>>>>>>>> the duped pairs in the original vector. >>>>>>>>> >>>>>>>>> ]N =: 2<\pp >>>>>>>>> >>>>>>>>> ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ >>>>>>>>> >>>>>>>>> │1 2│2 2│2 4│4 1│1 5│5 3│3 4│4 4│4 4│4 2│2 3│3 3│ >>>>>>>>> >>>>>>>>> └───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘ >>>>>>>>> >>>>>>>>> >>>>>>>>> What I ultimately wanted is a verb that will replace the duped pairs >>>>>>>>> >>>>>>>> in >>>>>> >>>>>>> the >>>>>>>> >>>>>>>>> *original* un-boxed vector, one at a time: >>>>>>>>> >>>>>>>>> n =: 1 2 2 4 1 5 3 4 4 4 2 3 3 >>>>>>>>> >>>>>>>>> f n >>>>>>>>> >>>>>>>>> 1 4 4 1 5 3 4 4 4 2 3 3 >>>>>>>>> >>>>>>>>> 1 2 2 4 1 5 3 8 4 2 3 3 >>>>>>>>> >>>>>>>>> 1 2 2 4 1 5 3 4 8 2 3 3 >>>>>>>>> >>>>>>>>> 1 2 2 4 1 5 3 4 4 4 2 6 >>>>>>>>> >>>>>>>>> Of course, the final row lengths will be one shorter that the >>>>>>>>> >>>>>>>> original >>>> >>>>> row >>>>>>>> >>>>>>>>> length. >>>>>>>>> >>>>>>>>> Skip >>>>>>>>> ------------------------------------------------------------ >>>>>>>>> >>>>>>>> ---------- >>>>>> >>>>>>> For information about J forums see http://www.jsoftware.com/ >>>>>>>>> >>>>>>>> forums.htm >>>>>> >>>>>>> ------------------------------------------------------------ >>>>>>>> >>>>>>> ---------- >>>> >>>>> For information about J forums see http://www.jsoftware.com/ >>>>>>>> >>>>>>> forums.htm >>>> >>>>> ---------------------------------------------------------------------- >>>>>>> For information about J forums see http://www.jsoftware.com/forum >>>>>>> s.htm >>>>>>> >>>>>> ---------------------------------------------------------------------- >>>>>> For information about J forums see http://www.jsoftware.com/forums.htm >>>>>> >>>>>> ---------------------------------------------------------------------- >>>>> For information about J forums see http://www.jsoftware.com/forums.htm >>>>> >>>> ---------------------------------------------------------------------- >>>> For information about J forums see http://www.jsoftware.com/forums.htm >>>> >>>> ---------------------------------------------------------------------- >>> For information about J forums see http://www.jsoftware.com/forums.htm >>> >> >> ---------------------------------------------------------------------- >> For information about J forums see http://www.jsoftware.com/forums.htm >> > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
