0. It may be helpful to think of &.> as "each". In fact, "each" is defined as such by some J standard library somewhere. Enter "each" in your J session and see what you get.
1. See https://code.jsoftware.com/wiki/Essays/Under for examples of &. , including from daily life (e.g. "under anaesthetics"). 2. More examples from daily life: https://www.jsoftware.com/papers/KEIQA.htm#under1 On Fri, Mar 13, 2020 at 3:02 AM ethiejiesa via Programming < programm...@jsoftware.com> wrote: > Yes, those are not precise terms. I personally think of &. as embodying > conjugation (from group theory). For monads, the analogy is often precise: > u&.v y <-> v^:_1 u v y > > But you are right, the idea of conjugation is abstract enough that it is > embodied by a dizzingly wide variety of applications: vector space base > transformation, measure of operator non-commutivity, localization of the > effects Rubik's cube turns, even complex conjugation etc. > > Anyway, specifically in th case of u&.>, since < is "box" and > is pretty > much > "unbox", I figured "do" and "undo" are reasonable approximations for a > gentle > explatation in the case at hand. Hopefully, it's helpful to Skip. > > > Hauke Rehr <hauke.r...@uni-jena.de> wrote: > > In my opinion, “do” and “undo” is not the idea/concept of &. > > and doesn’t get across what it actually does. > > > > &. is very helpful in a plethora of use cases > > it is like transform, work in transformed space, transform back > > (like working with conjugate matrices or in fourier space, e.g.) > > > > From my personal experience (which is not much), > > I’ve had most use of &. with v ∈ { >, |., |: } > > but being aware of what it does for you will make > > you find it’s useful in many more cases. > > > > hope this helps > > > > > > Am 13.03.20 um 08:55 schrieb ethiejiesa via Programming: > > > I'll contribute a little prose. Hopefully, it's helpful. > > > > > > In this particular case, notice that > transforms your list of boxes > into a 5x6 > > > table: > > > > > > > (6?55);(6?55);(6?55);(6?55);(6?55) > > > 13 4 19 43 3 52 > > > 10 1 4 46 52 11 > > > 38 12 48 50 54 45 > > > 36 54 39 35 53 50 > > > 44 1 7 54 11 41 > > > > > > So, we should be able to easily "reverse" the above, meaning that > dealing with > > > a 5x6 array is pretty much the same as dealing with 5 boxes of > 6-arrays. Let's > > > just keep this in mind for now, and first try to generate this 6x5 > table. > > > > > > The key point of ? is that it's monadic and dyadic ranks are all 0, > meaning > > > that it transforms an array of integers into a corresponding array of > random > > > numbers: > > > > > > ? 50 6 $ 55 > > > ... > > > > > > produces a random 50x6 array of integers each in the range i.55. This > is not > > > quite what we want, but we first note that it can be more idiomatically > > > written: > > > > > > 50 6 ?@$ 55 > > > > > > The utility of @ (and @:) become a lot more apparent when writing tacit > > > expressions. In general, x u@v y is equivalent to u (x v y), applying > u "atop" > > > x v y, hence the mnemonic. (NB. The difference between u@v and u@:v > is that > > > they produce verbs of different rank.) > > > > > > The dyad n?m produces n random numbers without replacement. Your posed > problem > > > is to generate 50 such lists, so conceptually we want to *reshape* the > > > arguments of ? into 50-lists: > > > > > > (50$6) ? (50$55) > > > > > > but, better yet, as lots of verbs to ? will automatically reshape an > atomic > > > argument to the shape of the other argument, so we can abbreviate the > above in > > > one of two ways: > > > > > > 6 ? (50$55) NB. or > > > (50$6) ? 55 > > > > > > In the first case, the parentheses are not necessary due to J parsing > rules, so > > > its more compact and idomatic to elide them > > > > > > 6 ? 50$55 > > > > > > These three previous options should produce the desired random tables. > Now, > > > putting things together, we just want to "redo" the boxing we did in > the > > > beginning example: > > > > > > <"1 (6 ? 50$55) > > > > > > Which should give the desired result. We need the > > > parenthesis to separate the 1 from the 6, otherwise J would interpret > this as > > > <"1 6. Another way to break up the list lexing is like this: > > > > > > <"1 [ 6 ? 50 $ 55 > > > > > > Anyway, Hui's use of &. is even nicer. The key ideas is that u&.v > first runs v > > > on u's aguments and then *undoes* v on the result. The really neat > thing is > > > that > is a no-op on non-boxed atoms: > > > > > > > 42 > > > 42 > > > > > > So the idea is to let > be a no-op on our input array of integers, > then let ? > > > do it's thing, and finally *undo* > on *each* result. And since > undoing > is > > > simply doing <, we get what we want. > > > > > > 6 ?&.> 50 $ 55 > > > > > > The "each result" part above is exactly why this form is slick. ?&.> > has the > > > rank of >, i.e. 0 0 0. This means that it will box each list produced > by ? as > > > the integers are fed to it, which is exactly what we want in this case. > > > > > > Very cool stuff. Rank! > > > > > > > > > Skip Cave <s...@caveconsulting.com> wrote: > > >> Wow! Two completely different ways to generate multiple sets of random > > >> integers. Roger used &. which I haven't really ever used or > understood. I > > >> will definitely need to understand &. for the future. Devon used @, > which I > > >> also haven't used very much. I need to find some practice and > training > > >> examples to work on both concepts. > > >> > > >> Skip Cave > > >> Cave Consulting LLC > > >> > > >> > > >> On Fri, Mar 13, 2020 at 12:04 AM Devon McCormick <devon...@gmail.com> > wrote: > > >> > > >>> 6 5?@$55 > > >>> Will give you a 6x5 table that is 6 independent rows of 5?55. > > >>> > > >>> > > >>> On Fri, Mar 13, 2020 at 12:52 AM Roger Hui < > rogerhui.can...@gmail.com> > > >>> wrote: > > >>> > > >>>> 6 ?&.> 5 $ 55 > > >>>> > > >>>> > > >>> > ┌────────────────┬─────────────────┬───────────────┬─────────────────┬───────────────┐ > > >>>> │47 28 45 25 8 36│22 40 23 20 11 49│15 16 42 38 4 5│50 45 38 37 13 > 28│42 > > >>> 4 > > >>>> 36 7 23 49│ > > >>>> > > >>>> > > >>> > └────────────────┴─────────────────┴───────────────┴─────────────────┴───────────────┘ > > >>>> > > >>>> 6 ?&.> 50 $ 55 > > >>>> ... > > >>>> > > >>>> > > >>>> On Thu, Mar 12, 2020 at 9:49 PM Skip Cave <s...@caveconsulting.com> > > >>> wrote: > > >>>> > > >>>>> How can I generate the following result extended 50 times, without > > >>>> explicit > > >>>>> looping? > > >>>>> > > >>>>> (6?55);(6?55);(6?55);(6?55);(6?55) > > >>>>> > > >>>>> > > >>>>> > > >>>> > > >>> > ┌───────────────┬───────────────┬─────────────────┬─────────────────┬───────────────┐ > > >>>>> > > >>>>> │13 4 19 43 3 52│10 1 4 46 52 11│38 12 48 50 54 45│36 54 39 35 53 > 50│44 > > >>>> 1 7 > > >>>>> 54 11 41│ > > >>>>> > > >>>>> > > >>>>> > > >>>> > > >>> > └───────────────┴───────────────┴─────────────────┴─────────────────┴───────────────┘ > > >>>>> > > >>>>> > > >>>>> > > >>>>> Skip Cave > > >>>>> Cave Consulting LLC > > >>>>> > ---------------------------------------------------------------------- > > >>>>> For information about J forums see > http://www.jsoftware.com/forums.htm > > >>>>> > > >>>> > ---------------------------------------------------------------------- > > >>>> For information about J forums see > http://www.jsoftware.com/forums.htm > > >>>> > > >>> > > >>> > > >>> -- > > >>> > > >>> Devon McCormick, CFA > > >>> > > >>> Quantitative Consultant > > >>> > ---------------------------------------------------------------------- > > >>> 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