Note the addon 'general/misc/validate' contains the verb isempty.
   isempty
0: e. $


On Fri, Jun 9, 2017 at 3:15 PM, Ian Clark <[email protected]> wrote:

> Henry, I absolutely agree.
>
> Only last night I was thinking NuVoc lacked an in-depth treatment of empty
> lists (/tables) – and how it was a serious omission. (It does have
> Vocabulary/EmptyArguments --which overlaps slightly.)
>
> Devon's treatment fits the bill.
>
> Might also need a reliable test for emptiness, to discourage use of: if. y
> -: '' do. …
>
> On Fri, Jun 9, 2017 at 3:44 AM, Henry Rich <[email protected]> wrote:
>
> > This is great - would you be willing to add it to NuVoc? Perhaps as
> > Vocabulary/EmptyArrays?  If you do, I'll point the main NuVoc page to it.
> >
> > Henry Rich
> >
> >
> > On 6/8/2017 10:35 PM, Devon McCormick wrote:
> >
> >> J's treatment of empty arrays is thoroughly logical and consistent but
> >> it's
> >> probably more instructive to look at the shapes of results rather than
> at
> >> the results themselves, since a lot of empty arrays "look" the same
> though
> >> their shapes clearly differ:
> >>
> >>     0 0 0$99         NB. 3-D empty array
> >>     9 0 0$99         NB. 3-D empty array
> >>
> >> At the risk of obfuscating rather than clarifying, here are some
> >> progressions from non-empty to empty arrays - the point here is that not
> >> all empty arrays are the same.  Any array with zero as at least one of
> its
> >> dimensions is empty but may have a different shape than another empty
> >> array.
> >>
> >>     $i.2             NB. 2-element vec
> >> 2
> >>     $1}.i.2          NB. Drop 1 element from 2-element vec
> >> 1
> >>     $2}.i.2          NB. Drop 2 elements from 2-element vec
> >> 0
> >>     $3}.i.2          NB. Drop 3 elements from 2-element vec
> >> 0                   NB. -> empty vector
> >>
> >>     $i.2 2           NB. 2x2 mat
> >> 2 2
> >>     $1}.i.2 2        NB. Drop 1 row from 2x2 mat
> >> 1 2
> >>     $2}.i.2 2        NB. Drop 2 rows from 2x2 mat
> >> 0 2                 NB.  -> mat with no rows
> >>     $3}.i.2 2        NB. Drop 3 rows from 2x2 mat
> >> 0 2
> >>
> >>     $1}."1 i.2 2     NB. Drop 1 column from 2x2 mat
> >> 2 1
> >>     $2}."1 i.2 2     NB. Drop 2 columns from 2x2 mat
> >> 2 0                 NB.  -> mat with no columns
> >>     $3}."1 i.2 2     NB. Drop 3 columns from 2x2 mat
> >> 2 0
> >>
> >>     <''              NB. Boxed empty
> >> ++
> >> ||
> >> ++
> >>     $<''             NB. Boxed empty is a scalar
> >>
> >>     '' -: $<''       NB. Boxed empty is a scalar
> >> 1
> >>     (i.0) -: $<''    NB. Boxed empty is a scalar
> >> 1
> >>     $,<''            NB. 1-element boxed empty
> >> 1
> >>     a: -: <''        NB. "Ace" is equivalent to boxed empty
> >> 1
> >>
> >>     2$a:             NB. 2-element vector of boxed empties
> >> +++
> >> |||
> >> +++
> >>     $2$a:            NB. 2-element vector
> >> 2
> >>     $1}.2$a:         NB. Drop 1 element from 2-element vector
> >> 1
> >>     1}.2$a:          NB. Drop 1 element from 2-element vector
> >> ++
> >> ||
> >> ++
> >>     $2}.2$a:         NB. Drop 2 elements from 2-element vector
> >> 0                   NB.  -> empty vector
> >>     '' -: 2}.2$a:    NB. Empty vector
> >> 1
> >>     '' -: 2}. i.2    NB. Empty vector
> >> 1
> >>     '' -: 2}. i.2 2  NB. Not empty vector: 0x2 mat
> >> 0
> >>     (0 2$'hi') -: 2}. i.2 2
> >> 1
> >>
> >> Obligatory empty array joke:
> >>    A man sits down in a diner and asks for coffee with no cream.  The
> >> waitress replies, "I'm sorry, sir.  We're out of cream.  Would you like
> >> your coffee with no milk?"
> >>
> >>
> >>
> >> On Wed, Jun 7, 2017 at 1:03 PM, Michael Rice <[email protected]>
> wrote:
> >>
> >> @robert therriault
> >>>
> >>> my_empty =: }. 1
> >>>
> >>> my_empty
> >>>
> >>>
> >>> f my_empty
> >>>
> >>> 1
> >>>
> >>> < my_empty
> >>>
> >>> ┌┐
> >>>
> >>> ││
> >>>
> >>> └┘
> >>>
> >>>
> >>> An empty box?
> >>>
> >>>
> >>> I'm beginning to see the problem I was thinking of doing in J is
> >>> ill-suited
> >>> to the language. It could be done, as it could in any computer
> language,
> >>> but the solution would be pretty kludgy.
> >>>
> >>>
> >>> I'll soon think of something else on which to apply J. It's already
> >>> invading my sleep. Going through exercises is no way to get into a
> >>> language. One needs a problem on which to focus it. I've been wanting
> to
> >>> explore cryptography more deeply, and J seems ideal for it.
> >>>
> >>>
> >>> Thanks to all,
> >>>
> >>>
> >>> Michael
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>> On Wed, Jun 7, 2017 at 12:01 PM, robert therriault <
> >>> [email protected]>
> >>> wrote:
> >>>
> >>> I'm going to look at these results through the lens of Shape ($)
> >>>>
> >>>>      f =: (1&,)
> >>>>     f 2
> >>>> 1 2
> >>>>     $ f 2  NB. shape is 2
> >>>> 2
> >>>>     f ''
> >>>> 1
> >>>>     $ f '' NB. shape is 1
> >>>> 1
> >>>>     empty  NB. it is a verb in my environment
> >>>> (i.0 0)"_
> >>>>     f empty
> >>>> f empty   NB. result of two verbs and no arguments is just the two
> verbs
> >>>>     f empty 2  NB. this is where you expect to have a 1 returned
> >>>>
> >>>>     $ f empty 2  NB. shape is 1 0
> >>>> 1 0      NB. one line of no items means no display
> >>>>
> >>>> I think it is the second dimension of EMPTY as opposed to NULL that is
> >>>> tripping you up.
> >>>>
> >>>>      NULL=.''
> >>>>     $ NULL
> >>>> 0
> >>>>     EMPTY
> >>>>     $EMPTY
> >>>> 0 0
> >>>>     EMPTY-:empty 1
> >>>> 1
> >>>>
> >>>> In answer to your most recent question Michael, I would say just make
> >>>>
> >>> sure
> >>>
> >>>> that the empty list that you pass is the right shape.
> >>>>
> >>>> Cheers, bob
> >>>>
> >>>> On Jun 7, 2017, at 8:48 AM, Raul Miller <[email protected]>
> wrote:
> >>>>>
> >>>>> empty is a verb
> >>>>> f is a verb
> >>>>>
> >>>>> so f empty is a verb (a hook)
> >>>>>
> >>>>>    f=: 1&,
> >>>>>    (f empty) 3
> >>>>>
> >>>>>
> >>>>>
> >>>>>    $(f empty) 3
> >>>>> 3 0
> >>>>>    $(f empty) 5
> >>>>> 5 0
> >>>>>
> >>>>> The reasons for this are documented at
> >>>>> http://www.jsoftware.com/help/dictionary/dictf.htm (hooks) and
> >>>>> http://www.jsoftware.com/help/dictionary/d630n.htm (x m&v y).
> >>>>>
> >>>>> That said, verbs take arguments and empty is a verb - it always
> >>>>> produces an empty result, but only when it gets an argument.
> >>>>>
> >>>>> I hope this helps,
> >>>>>
> >>>>> --
> >>>>> Raul
> >>>>>
> >>>>>
> >>>>> On Wed, Jun 7, 2017 at 11:39 AM, Michael Rice <[email protected]>
> >>>>>
> >>>> wrote:
> >>>>
> >>>>> Oops! Guess I creamed empty. Will close and regen Jqt before
> >>>>>>
> >>>>> proceeding.
> >>>
> >>>> Done!
> >>>>>>
> >>>>>>    f =: (1&,)
> >>>>>>    f 2
> >>>>>> 1 2
> >>>>>>    f empty
> >>>>>> f empty
> >>>>>>
> >>>>>> Shouldn't it have returned
> >>>>>>
> >>>>>> 1
> >>>>>>
> >>>>>> ?
> >>>>>>
> >>>>>> On Wed, Jun 7, 2017 at 11:22 AM, robert therriault <
> >>>>>>
> >>>>> [email protected]>
> >>>>
> >>>>> wrote:
> >>>>>>
> >>>>>> One thing to remember is that empty is already defined as a verb
> >>>>>>>
> >>>>>>>     empty
> >>>>>>> (i.0 0)"_
> >>>>>>>
> >>>>>>> So if you overwrite this you may break some code if you have
> >>>>>>>
> >>>>>> previously
> >>>
> >>>> relied on the existing verb definition.
> >>>>>>>
> >>>>>>> I think along the lines that Pascal mentioned that null could be
> >>>>>>>
> >>>>>> similarly
> >>>>
> >>>>> defined as
> >>>>>>>
> >>>>>>>     null NB. check that it is not already used
> >>>>>>> |value error: null
> >>>>>>>    null=:(i.0)"_
> >>>>>>>    NULL  NB. check that it is not already used - uppercase for
> global
> >>>>>>> nouns is a convention I like and is often seen in J code
> >>>>>>> |value error: NULL
> >>>>>>>    NULL=:'' NB. I use this as the null string (same as what John
> >>>>>>>
> >>>>>> suggested)
> >>>>
> >>>>>    NULL-:null 2 NB. any argument produces NULL from null
> >>>>>>> 1
> >>>>>>>
> >>>>>>> Hope this helps,
> >>>>>>>
> >>>>>>> Cheers, bob
> >>>>>>>
> >>>>>>> On Jun 7, 2017, at 8:09 AM, 'Jon Hough' via Programming <
> >>>>>>>>
> >>>>>>> [email protected]> wrote:
> >>>>>>>
> >>>>>>>>
> >>>>>>>> I may be wrong in doing this, but I usually write
> >>>>>>>> empty=: ''
> >>>>>>>> to signify an empty list, array, matrix etc.
> >>>>>>>>
> >>>>>>>>
> >>>>>>>> On Jun 7, 2017, 23:59, at 23:59, Michael Rice <
> [email protected]>
> >>>>>>>>
> >>>>>>> wrote:
> >>>>>>>
> >>>>>>>> Is there a special "noun" for an empty list?
> >>>>>>>>>
> >>>>>>>>> Creating one seems enigmatic.
> >>>>>>>>>
> >>>>>>>>> empty =: 1 2
> >>>>>>>>> empty
> >>>>>>>>> 1 2
> >>>>>>>>> empty =: }. empty
> >>>>>>>>> empty
> >>>>>>>>> 2
> >>>>>>>>> empty =: }. empty
> >>>>>>>>> empty
> >>>>>>>>>
> >>>>>>>>> empty1 =:
> >>>>>>>>> |syntax error
> >>>>>>>>> |   empty1=:
> >>>>>>>>> ------------------------------------------------------------
> >>>>>>>>>
> >>>>>>>> ----------
> >>>>
> >>>>> 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
> >>>
> >>>
> >>
> >>
> >
> > ---
> > This email has been checked for viruses by AVG.
> > http://www.avg.com
> >
> > ----------------------------------------------------------------------
> > 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

Reply via email to