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

Reply via email to