Hi Skip,
The document that I found filling this role for me was the J Reference Card
linked on the Getting Started
<http://code.jsoftware.com/wiki/Guides/Getting_Started> page of the wiki.

I used these pages both to find the functionality I was looking for to
solve an immediate need, but also to introduce me to the other primitives
available that I hadn't used yet.


Cheers,

On Wed, Nov 9, 2016 at 6:41 AM, Skip Cave <[email protected]> wrote:

> Raul,
>
> Yes. I agree that there often just isn't any obvious word that can be used
> to describe many J primitive functions, not to mention simple J phrases.
> Thus J has to use words that have meanings somehow related to each
> function, or just make one up. In either case, it makes it nearly
> impossible to track down a required functionality by word searches. One has
> to essentially go through each primitive, looking for the required
> functionality.
>
> I have found that the J Phrases pages
> <http://www.jsoftware.com/help/phrases/contents.htm> makes a reasonable
> first attempt at categorizing J primitives and simple phrases into broad
> categories, using words that are related to that category of functions in a
> way that is understandable to a more general audience. About half the time
> I can find something close to what I need by using Phrases. However the
> definitions of the individual phrases are often cryptically succinct, still
> making it hard to narrow down the analysis. More importantly, many useful
> functions (like a vector except) are just missing.
>
> I believe that a document which categorizes primitives and simple phrases
> into general categories, and then gives simple examples leading to more
> complex examples, would be a great help to newbies trying to learn J. It
> would also help experienced programmers who are looking for a better way to
> do something. The Phrases pages are a good start, but more categories and
> simpler examples are needed.
>
> Skip
>
>
>
> Skip Cave
> Cave Consulting LLC
>
> On Tue, Nov 8, 2016 at 10:34 AM, Raul Miller <[email protected]>
> wrote:
>
> > 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
> >
> ----------------------------------------------------------------------
> 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