Indeed, you are right. In fact: zero atoms implies a rank greater than zero.
A rank zero array always has exactly 1 atom. -- Raul On Fri, Feb 5, 2016 at 2:45 PM, Matthew Baulch <[email protected]> wrote: > Thanks Raul. I'm pleased you asked. > > Originally, I couldn't see what you were trying to demonstrate. It's now > morning here, and having slept, I think I can see your point. > > You're right. Sorry. My sentence wasn't entirely correct. You did assign > (and demonstrate) x =: 1 0 1$0 which indeed lacks any atoms. > > I think I see my critical mistake. The x arguments in (1), (2), (3), (4) > have ranks 3, 3, 2, 1. My hasty application of (erroneous) intuition has > brought me unstuck: 0 atoms does not necessarily imply rank 0. I'll have > make a poster "rank = #$" and hang it on my wall. > > On Sat, Feb 6, 2016 at 12:27 AM, Raul Miller <[email protected]> wrote: > >> Why do you say "Your x arguments all have atoms so, I'm sorry, I can't >> see their significance."? >> >> What is different between the x values in my email message and the x >> values you originally specified? >> >> Thanks, >> >> -- >> Raul >> >> >> On Fri, Feb 5, 2016 at 5:42 AM, Matthew Baulch <[email protected]> >> wrote: >> > The 'x $ y' dyad, like you say, has rank 1 for x and _ for y. Examples >> > (1)-(3) have rank 0 arguments for x. The x arguments are arrays with >> > non-empty shape but no atoms in these cases. Your x arguments all have >> > atoms so, I'm sorry, I can't see their significance. My x arguments have >> > shapes containing only non-negative integers (as you mentioned), although >> > some are zero. I'm not sure what you mean by: >> > >> > "So your first example is not even going to get to the reshape part of >> the >> > operation. Your frame, which will hold your results, is empty." >> > >> > I understand and agree that the frame of the left argument is empty. That >> > doesn't surprise or concern me. What I don't understand are the reasons >> for >> > the result shapes in (1)-(3), and why the result for (3) has an atom. >> > >> > All verbs (that I can think of) with an argument of rank >= 1 are defined >> > also for arguments of rank 0. For instance, 'i. y', 'x # y' (x has rank >> > 1), and so on. Of course, there are very many verbs having arguments of >> > infinite rank too. Therefore, I don't see it as remarkable to apply a >> rank >> > 0 array as an argument to a verb with rank > 0. >> > >> > Your comment >> > >> > "the dictionary definitions for verbs mostly only deal with arguments >> which >> > fit within the dictionary defined rank for the verb" >> > >> > was enlightening and made me think. Is it simply that the case that most >> > verb definitions don't cover the case of rank 0 arguments with no atoms? >> > Perhaps my question relates to an undefined part of J? >> > >> > On Fri, Feb 5, 2016 at 7:27 PM, Raul Miller <[email protected]> >> wrote: >> > >> >> I'm going to go with the original vocab definition, because that's how >> >> I understand reshape. >> >> >> >> But also keep in mind that the left rank of reshape is 1. A shape is a >> >> (usually quite short) list of non-negative integers. This is something >> >> that we all have to go through - remembering that the dictionary >> >> definitions for verbs mostly only deal with arguments which fit within >> >> the dictionary defined rank for the verb. That's good enough for most >> >> purposes, when you need to concern yourself with rank it's the same >> >> rules for all verbs (except for the actual numeric values being >> >> different on some verbs). >> >> >> >> Perhaps http://www.jsoftware.com/help/dictionary/dictb.htm would be >> >> worth reviewing? >> >> >> >> Anyways, to see what that means for your reshape examples, consider >> this: >> >> >> >> <"1 x=: 1 0 1 $ 0 >> >> >> >> (that's an empty result - no boxes.) >> >> >> >> $<"1 x=: 1 0 1 $ 0 >> >> 1 0 >> >> >> >> (that's what your frame looks like, for this example.) >> >> >> >> So your first example is not even going to get to the reshape part of >> >> the operation. Your frame, which will hold your results, is empty. >> >> >> >> In your first example, x is empty, so you'll be using an array of >> >> fills (which are zeros) for the test run of reshape. So you actually >> >> do get a final dimension here - the last dimension is 1, and although >> >> x is empty, the interpreter uses that 1 to decide how many zeros it's >> >> going to use. >> >> >> >> Your second and third examples have the same issue - you're not doing >> >> a single reshape but a collection of reshapes. But in those examples >> >> your last dimension of x is zero. So when the interpreter does its >> >> test run on the verb to see what kinds of results it's getting instead >> >> of doing: >> >> >> >> (,0) $ 1 2 3 >> >> >> >> like it was in the first example, it is instead doing >> >> >> >> '' $ 1 2 3 >> >> 1 >> >> >> >> In other words there trial result doesn't have a shape, so you get one >> >> less dimension in your result than you had in x. >> >> >> >> As for your last example: >> >> >> >> <"1 x=: 1 $ 0 >> >> +-+ >> >> |0| >> >> +-+ >> >> $ <"1 x=: 1 $ 0 >> >> >> >> ...so your final example does do the reshaping, but you are reshaping >> >> with an empty shape, so you still get an empty result. >> >> >> >> Does this make sense? >> >> >> >> Thanks, >> >> >> >> -- >> >> Raul >> >> >> >> On Fri, Feb 5, 2016 at 3:06 AM, Matthew Baulch <[email protected]> >> >> wrote: >> >> > Original vocab says: >> >> > "The shape of x$y is x,siy where siy is the shape of an item of y." >> >> > >> >> > NuVoc says (for x $ y): >> >> > "If y is an atom or a list, the shape of the result is x", and "the >> shape >> >> > of [the result of x$y] is always x,}.$y". >> >> > >> >> > Let y =: 1 2 3 for all that follows. >> >> > >> >> > (1) >> >> > x =: 1 0 1 $ 0 >> >> > x$y has no atoms, shape 1 0 0 >> >> > (2) >> >> > x =: 1 0 0 $ 0 >> >> > x$y has no atoms, shape 1 0 >> >> > (3) >> >> > x =: 1 0 $ 0 >> >> > x$y has a single atom: 1, and shape 1 >> >> > (4) >> >> > x =: 1 $ 0 >> >> > x$y has no atoms, shape 0 >> >> > >> >> > Examples (1)-(3) appear to violate the definitions. Only example (4) >> >> > agrees. Can anyone shed some light on this? (3) strikes me as >> >> particularly >> >> > strange. I'm sure I must have missed something. >> >> > >> >> > My head is spinning! >> >> > ---------------------------------------------------------------------- >> >> > 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
