For something like your 'swap', having example arguments helps, so: (i.3) swap 'abcd' bcad
So your reduction swap&.>/@:|. suggests you were working with permutation indices, possibly of the same length (though if that were the case, there wouldn't have been any need for boxing -- but the other alternative would be either a narrowing index range towards the right hand end of your list of boxes or the presence of repeated indices [which I have a hard time reasoning about in this context]). Anyways, if there's a 'better' way of implementing this concept of 'swap', it would probably have to be informed by the problem you were addressing... I hope this helps, -- Raul On Sat, May 30, 2020 at 3:27 AM Hauke Rehr <hauke.r...@uni-jena.de> wrote: > > As with natural languages, it doesn’t get you fluent > gaining a large thesaurus only. > If you learn the grammar (there are two of them in J: > the set of production rules called a grammar; and the > natural language grammar terms used; here I am mostly > concerned with the latter) with the words, you’ll > better be able to apply them in different contexts. > > I learned / as an adverb from the start* and so each > time I come across a situation where I have a n-dim > structure but want to apply my custom dyadic 'op' > operator between successive (n-1)-dim entries, > I do 'op/' or 'op/@:|.' depending on associativity. > (maybe replacing 'op' by 'op~' as non-commutativity > may require) > Rank " helps with application along an axis of lower > dimension (farther along the $hape of one’s noun). > > My last use case was a boxed list consisting of > a 1-d array and a set of transpositions I produced. > I wrote (I bet there are better ways to do it) > swap =: ] {~ ~.@[ C.@; <:@#@] > and applied it on that boxed list. > That actually looked something like 'swap&.>/@:|.' . > > hth > > * ok, the first example of J is 'avg =: +/ % #' > and by that I only learned J is functional > and has this train of verb evaluation somehow; > but when I learned the suffix / (I always write > it as a suffix), I also learned it’s an adverb > > > Am 30.05.20 um 04:06 schrieb Thomas McGuire: > > Thanks Henry and Hauke, > > Seeing the idiom and my use of raze I should have been able to infer that, > > since ;/ was working over the same axis I wanted. I have to reremember that > > ‘/‘ actually inserts it’s operator in between things, that may have helped > > to figure this out on my own from what I had done so far. > > Partly I use ‘/‘ so frequently to sum arrays of 1 dimension I think of it > > more as a LISP operation (+ 2 3 4) instead of what it is actually doing in > > J. > > > > Tom McGuire > > > >> On May 29, 2020, at 11:19 AM, Henry Rich <henryhr...@gmail.com> wrote: > >> > >> Right: (,/ y) is the idiom. > >> > >> Henry Rich > >> > >> On 5/29/2020 11:13 AM, Hauke Rehr wrote: > >>> (;@;/ -: ,/) i. 12 2 4 > >>> 1 > >>> > >>> Am 29.05.20 um 17:04 schrieb Thomas McGuire: > >>>> I have a 3 dimensional array I want to squish it so the rows of the > >>>> tables just stack on top of each other. > >>>> > >>>> i. 12 2 4 > >>>> 0 1 2 3 > >>>> 4 5 6 7 > >>>> > >>>> 8 9 10 11 > >>>> 12 13 14 15 > >>>> > >>>> 16 17 18 19 > >>>> 20 21 22 23 > >>>> > >>>> 24 25 26 27 > >>>> 28 29 30 31 > >>>> > >>>> 32 33 34 35 > >>>> 36 37 38 39 > >>>> > >>>> 40 41 42 43 > >>>> 44 45 46 47 > >>>> > >>>> 48 49 50 51 > >>>> 52 53 54 55 > >>>> > >>>> 56 57 58 59 > >>>> 60 61 62 63 > >>>> > >>>> 64 65 66 67 > >>>> 68 69 70 71 > >>>> > >>>> 72 73 74 75 > >>>> 76 77 78 79 > >>>> > >>>> 80 81 82 83 > >>>> 84 85 86 87 > >>>> > >>>> 88 89 90 91 > >>>> 92 93 94 95 > >>>> > >>>> So I want the individual tables to stack right on top of each other > >>>> creating a 2 dimensional array. Now if I box them then unbox them it > >>>> does just what I want: > >>>> > >>>> ;;/i. 12 2 4 > >>>> 0 1 2 3 > >>>> 4 5 6 7 > >>>> 8 9 10 11 > >>>> 12 13 14 15 > >>>> 16 17 18 19 > >>>> 20 21 22 23 > >>>> 24 25 26 27 > >>>> 28 29 30 31 > >>>> 32 33 34 35 > >>>> 36 37 38 39 > >>>> 40 41 42 43 > >>>> 44 45 46 47 > >>>> 48 49 50 51 > >>>> 52 53 54 55 > >>>> 56 57 58 59 > >>>> 60 61 62 63 > >>>> 64 65 66 67 > >>>> 68 69 70 71 > >>>> 72 73 74 75 > >>>> 76 77 78 79 > >>>> 80 81 82 83 > >>>> 84 85 86 87 > >>>> 88 89 90 91 > >>>> 92 93 94 95 > >>>> > >>>> Now I could calculate the dimensions and reshape using ($ ,) > >>>> 24 4 ($ ,) i. 12 2 4 > >>>> <produces the condensed version above> > >>>> > >>>> But it seems there should be a non-calculating, non-boxing way of doing > >>>> this. I tried playing with the rank of ravel (,) with out success. > >>>> > >>>> Any suggestions? > >>>> > >>>> Tom McGuire > >>>> ---------------------------------------------------------------------- > >>>> For information about J forums see http://www.jsoftware.com/forums.htm > >>>> > >>> > >> > >> > >> -- > >> This email has been checked for viruses by AVG. > >> https://www.avg.com <https://www.avg.com/> > >> > >> ---------------------------------------------------------------------- > >> For information about J forums see http://www.jsoftware.com/forums.htm > >> <http://www.jsoftware.com/forums.htm> > > ---------------------------------------------------------------------- > > For information about J forums see http://www.jsoftware.com/forums.htm > > > > -- > ---------------------- > mail written using NEO > neo-layout.org > > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm