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

Reply via email to