Very good point about verbal shorthands. The word "empty" is very likely to trip up newcomers. Once they learn one meaning, they're less likely to look out for others. Perhaps even experienced J'ers sometimes get tripped up? Though they'll more easily work out the consequences of each possible interpretation, perhaps ambiguity may sometimes remain.
It seems to me that the distinction between one 'empty' and another is irrelevant in many situations as both often lead to the same result. It's these corner-cases where the casual language causes issues. I don't know whether introducing another term (nil? vacuous? ...) would prevent this. Seems undesirable to create yet another definition. Maybe specifying 'shape' and 'atoms' with each mention of 'empty' is the answer. On Sat, Jan 16, 2016 at 6:14 AM, Raul Miller <[email protected]> wrote: > I think you meant your first sentence to be "It sounds like your > original confusion was between empty arguments (where the frame > contains 0) and a frame with an empty shape (which simply means that > the verb operates on a single cell)." > > Empty shape is very different from empty of values. > > But our tendencies towards verbal shorthands can mishandle this > "scalar" or "atomic" issue. > > Thanks, > > -- > Raul > > > On Fri, Jan 15, 2016 at 5:20 AM, Henry Rich <[email protected]> wrote: > > It sounds like your original confusion was between empty arguments (where > > the frame contains 0) and an empty frame (which simply means that the > verb > > operates on a single cell). > > > > http://code.jsoftware.com/wiki/Vocabulary/EmptyArguments > > > > has more on this topic. > > > > Whenever an earnest user has confusion with the documentation, I want to > > improve the documentation. Can you think where a timely word would have > > helped? > > > > Henry Rich > > > > > > On 1/15/2016 2:43 AM, Matthew Baulch wrote: > >> > >> Thanks Roger. That's perfect. I see what you mean: frames with 0 > sometimes > >> make sense, and zero frames prevent unnecessary awkwardness and > ambiguity > >> in these cases. Very good examples! > >> > >> On Fri, Jan 15, 2016 at 5:57 PM, Roger Hui <[email protected]> > >> wrote: > >> > >>> Empty frame, or more accurately zero frames, if it is said to be for > >>> anything, is to allow edge cases, the case where the frame contains a > 0, > >>> to > >>> work without a lot of exceptions, without the programmer having to > write > >>> extra code. An example hopefully illustrates this point. > >>> > >>> x ,"1 y=: i.3 4 > >>> 10 20 30 0 1 2 3 > >>> 10 20 30 4 5 6 7 > >>> 10 20 30 8 9 10 11 > >>> > >>> In this case the left frame is '' and the right frame is }:$y, (,3) in > >>> this > >>> case. > >>> > >>> x ,"1 y=: i.2 4 > >>> 10 20 30 0 1 2 3 > >>> 10 20 30 4 5 6 7 > >>> x ,"1 y=: i.1 4 > >>> 10 20 30 0 1 2 3 > >>> x ,"1 y=: i.0 4 > >>> > >>> The right frames in the successive examples are (,2), (,1), and (,0). > >>> The > >>> last is an example of a zero frame, and the example worked with no > fuss. > >>> The following sequence makes more salient the consistent treatment of > >>> frames, including zero frames. > >>> > >>> $ x,"1 y=: i.3 4 > >>> 3 7 > >>> $ x,"1 y=: i.2 4 > >>> 2 7 > >>> $ x,"1 y=: i.1 4 > >>> 1 7 > >>> $ x,"1 y=: i.0 4 > >>> 0 7 > >>> > >>> The reason why zero frames requires extra discussion is because > >>> ordinarily > >>> you have argument cell(s) for the verb to apply to, and the result > cells > >>> and hence the result is not in question. With zero frames, there are > no > >>> argument cells, so the system needs to do something extra (so that you > >>> don't have to). (x,"1 y appends vectors to vectors, but when y is i.0 > 4 > >>> it > >>> does not have any vectors.) > >>> > >>> > >>> > >>> On Thu, Jan 14, 2016 at 10:35 PM, Matthew Baulch < > [email protected]> > >>> wrote: > >>> > >>>> And the dictionary defines frame.... such that it may be empty? I'm > most > >>>> interested in whether, supposing this is the case, allowing empty > frames > >>>> serve (an)other purpose(s) in the structure of the language. > >>>> > >>>> Apologies if my original phrasing was unclear. > >>>> > >>>> Every decision in the design of J seems very deliberate—which I really > >>>> appreciate. It just seems that empty frames must serve a purpose. > Trying > >>> > >>> to > >>>> > >>>> work it out. > >>>> On 15 Jan 2016 4:21 pm, "bill lam" <[email protected]> wrote: > >>>> > >>>>> The J dictionary is always correct. > >>>>> > >>>>> Пт, 15 янв 2016, Matthew Baulch написал(а): > >>>>>> > >>>>>> Fair enough, though I can't work out whether the dictionary agrees > >>> > >>> with > >>>>>> > >>>>>> NuVoc here or not. Either way, which definition of frame is correct? > >>>>>> On 15 Jan 2016 3:48 pm, "bill lam" <[email protected]> wrote: > >>>>>> > >>>>>>> For J implemention, the only authority is the J dictionary since > >>>>>>> it defines the J language. You need not worry anything else. > >>>>>>> > >>>>>>> http://www.jsoftware.com/help/dictionary/dictb.htm > >>>>>>> > >>>>>>> Пт, 15 янв 2016, Matthew Baulch написал(а): > >>>>>>>> > >>>>>>>> I assume the intended definition of 'frame', in relation to verb > >>>>>>> > >>>>>>> arguments, > >>>>>>>> > >>>>>>>> is that given on > >>>>>>>> > >>>>>>>> http://code.jsoftware.com/wiki/Vocabulary/FramingFill > >>>>>>>> > >>>>>>>> I'm just trying to understand verb/argument combinations with > >>> > >>> empty > >>>>>>>> > >>>>>>>> frame--the most common case, I suppose. > >>>>>>>> > >>>>>>>> From the wording "each argument is ... an array of [r-cells]. The > >>>>> > >>>>> frame > >>>>>>> > >>>>>>> ... > >>>>>>>> > >>>>>>>> is the shape of this array of [r-cells]", it seems that a frame > >>>>> > >>>>> should > >>>>>>>> > >>>>>>>> never be empty, but in fact have a minimum shape of '1'. Of > >>> > >>> course, > >>>>> > >>>>> this > >>>>>>>> > >>>>>>>> ties into the wording of many other statements. In the case of > >>>> > >>>> dyadic > >>>>>>>> > >>>>>>>> verbs, for instance, > >>>>>>>> > >>>>>>>> "frames must agree ... they must be identical or one must be a > >>>>> > >>>>> prefix of > >>>>>>>> > >>>>>>>> the other" (stated in link above) > >>>>>>>> > >>>>>>>> as opposed to > >>>>>>>> > >>>>>>>> "frames must agree ... one must have shape 1 or be a prefix of > >>> > >>> the > >>>>> > >>>>> other" > >>>>>>>> > >>>>>>>> (the way I see it, assuming equality implies prefix-of) > >>>>>>>> > >>>>>>>> Can anyone shed some light on this? Is there an important reason > >>>> > >>>> for > >>>>> > >>>>> this > >>>>>>>> > >>>>>>>> convention that I'm missing, or is it of little consequence? > >>>>>>>> > >>>>>>>> I'm implementing (or trying to...) a subset of J for the JVM, and > >>>>> > >>>>> this is > >>>>>>>> > >>>>>>>> one little detail that's bothering me. > >>>>>>>> > >>>>>>>> Thanks. > >>>>>>>> > >>>>>>>> Matt Baulch > >>>>>>>> > >>>>> > ---------------------------------------------------------------------- > >>>>>>>> > >>>>>>>> For information about J forums see > >>>>> > >>>>> http://www.jsoftware.com/forums.htm > >>>>>>> > >>>>>>> -- > >>>>>>> regards, > >>>>>>> ==================================================== > >>>>>>> GPG key 1024D/4434BAB3 2008-08-24 > >>>>>>> gpg --keyserver subkeys.pgp.net --recv-keys 4434BAB3 > >>>>>>> gpg --keyserver subkeys.pgp.net --armor --export 4434BAB3 > >>>>>>> > >>>> ---------------------------------------------------------------------- > >>>>>>> > >>>>>>> For information about J forums see > >>>> > >>>> http://www.jsoftware.com/forums.htm > >>> > >>> ---------------------------------------------------------------------- > >>>>>> > >>>>>> For information about J forums see > >>> > >>> http://www.jsoftware.com/forums.htm > >>>>> > >>>>> -- > >>>>> regards, > >>>>> ==================================================== > >>>>> GPG key 1024D/4434BAB3 2008-08-24 > >>>>> gpg --keyserver subkeys.pgp.net --recv-keys 4434BAB3 > >>>>> gpg --keyserver subkeys.pgp.net --armor --export 4434BAB3 > >>>>> > ---------------------------------------------------------------------- > >>>>> 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
