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
