A hopefully useful illustrative tutorial on i. 0 0 vs i.0 or ''
1 2 , 3 4 , i. 0 0 1 2 3 4 1 2 , 3 4 , i. 0 1 2 3 4 EMPTY is an empty table, where appends add rows, while NULL is an empty vector where appends add items. Though Bill pointed out that this was just chosen based on console print behaviour. ________________________________ From: robert therriault <[email protected]> To: [email protected] Sent: Wednesday, June 7, 2017 12:01 PM Subject: Re: [Jprogramming] Empty lists? 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
