Empty lists can have non-zero items. Just tried a few things:
e=.i.2 3 0 1
e
#e
2
1{e
$1{e
3 0 1
#1{e
3
e,1
e=:e,1
e
$e
3 3 0 1
On Sat, Jun 10, 2017 at 1:39 PM, Raul Miller <[email protected]> wrote:
> Too esoteric and too application specific.
>
> Thanks,
>
> --
> Raul
>
> On Saturday, June 10, 2017, 'Pascal Jasmin' via Programming <
> [email protected]> wrote:
>
> > Beyond just having no items, a more important consideration in defining
> > empty is what happens when you append to it.
> >
> > The empty table (i.0 0) or empty vector or scalar (i.0) are the two real
> > world candidates for coding empty. And both are appropriate "empty
> > initializations" for setting up an appendable data structure.
> >
> >
> > While its very common to care about whether data has no items or not, in
> > data applications there is a useful difference between null (unassigned)
> > and nothing/empty (assigned), including applications for merging edits
> > (nulls do not override data, empty does).
> >
> > J offers unlimited coding options for various forms of nothingness. For
> > example i.0 1 (can be used for errors or type codes for other values
> > (boxes) in the same variable, or for the above "data merge" rules.
> >
> > The shorter way to make my main point, is that intializations mostly in
> > the context of append is the relevant use of empty for your application.
> > Where append does not apply, but a distinction with null might, i.0 0
> seems
> > like a fair choice.
> >
> > But we could also standardize on i.0 0 0, or i.0 1 as a code independent
> > of append behaviour. Though, I expect the consensus is that these issues
> > are too esoteric to need a general framework.
> >
> >
> > ________________________________
> > From: Ian Clark <[email protected] <javascript:;>>
> > To: [email protected] <javascript:;>
> > Sent: Saturday, June 10, 2017 12:38 AM
> > Subject: Re: [Jprogramming] Empty lists?
> >
> >
> >
> > It's a nice point: is a noun "empty" because it has no atoms – or because
> >
> > it has no items?
> >
> >
> > My appeal for "a reliable test for emptiness" was not an invitation to
> post
> >
> > code, but invite the community to reach a consensus on this, for
> inclusion
> >
> > in a proposed NuVoc page.
> >
> >
> > I hadn't meant to divert the discussion away from what IMO is the topic:
> >
> > helping a beginner correctly handle an empty noun (and/or empty list).
> >
> >
> > Speaking for myself, in the past I've used both Jasmin's and Raul's test
> of
> >
> > emptiness, depending whether I was coding a generalized utility, or
> solving
> >
> > a real-world problem. Which is not far off what Raul has just said.
> >
> >
> > I guess my meaning of "empty" ought to be NuVoc's, which you can read in:
> >
> > http://code.jsoftware.com/wiki/Vocabulary/Glossary#Empty
> >
> > …i.e. "no atoms".
> >
> >
> > Does it matter?
> >
> >
> > A newcomer to J might be forgiven for thinking it's "Much Ado About
> >
> > Nothing", as someone posted earlier. I'd disagree. It's fundamentally
> >
> > important – and I mean "fundamentally" – all about foundations – not
> just a
> >
> > long word for "very". Was it Knuth who first identified the "null case"
> >
> > (…did he call it?) as a large, important and massively wasteful class of
> >
> > bug? Older programmers will point me at a good reference.
> >
> >
> > It follows that NuVoc ought to have a big bold answer to questions about
> >
> > empty nouns. It doesn't. (At least, not bold enough). As a newcomer I'd
> >
> > expect to find: Vocabulary/EmptyNouns or /EmptyLists in:
> >
> > http://code.jsoftware.com/wiki/NuVoc#bottomrefs
> >
> >
> > @Raul – if you're not going to write it, are you happy for me to do so,
> >
> > using what you've posted in this thread? It won't be for a week or two
> >
> > because I'm snowed under and I don't know why I'm volunteering for this.
> >
> > Out of embarrassment, maybe.
> >
> >
> > Obligatory null-case joke (with apologies to Raul)…
> >
> >
> > BANK MANAGER: Why did you write the IRS a check for $0-00?
> >
> >
> > CUSTOMER: They said they needed it for the good of their system.
> >
> >
> > BANK MANAGER: Whaddya think it's done to OUR system?
> >
> >
> >
> >
> >
> > On Fri, Jun 9, 2017 at 12:41 PM, Raul Miller <[email protected]
> > <javascript:;>> wrote:
> >
> >
> > > I'm not sure I completely agree:
> >
> > >
> >
> > > i. 1 0 1
> >
> > > 0 < # i. 1 0 1
> >
> > > 1
> >
> > > 0 < # 3
> >
> > > 1
> >
> > >
> >
> > > For the general case of emptiness, the reliable test would be 0 e. $
> >
> > >
> >
> > > That said, checking for zero items (or more than zero items) is often
> >
> > > quite convenient.
> >
> > >
> >
> > > Thanks,
> >
> > >
> >
> > > --
> >
> > > Raul
> >
> > >
> >
> > >
> >
> > > On Fri, Jun 9, 2017 at 7:36 AM, 'Pascal Jasmin' via Programming
> >
> > > <[email protected] <javascript:;>> wrote:
> >
> > > > the reliable test for emptiness is (0 < #)
> >
> > > >
> >
> > > >
> >
> > > >
> >
> > > >
> >
> > > > ________________________________
> >
> > > > From: Ian Clark <[email protected] <javascript:;>>
> >
> > > > To: [email protected] <javascript:;>
> >
> > > > Sent: Thursday, June 8, 2017 11:15 PM
> >
> > > > Subject: Re: [Jprogramming] Empty lists?
> >
> > > >
> >
> > > >
> >
> > > >
> >
> > > > 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]
> > <javascript:;>> 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]
> > <javascript:;>>
> >
> > > 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] <javascript:;>>
> >
> > > >>>> 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]
> > <javascript:;>>
> >
> > > 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] <javascript:;>>
> >
> > > >>>>>>
> >
> > > >>>>> 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] <javascript:;>>
> >
> > > >>>>>
> >
> > > >>>>>> 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] <javascript:;>> 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] <javascript:;>>
> >
> > > >>>>>>>>>
> >
> > > >>>>>>>> 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
> >
> > > ----------------------------------------------------------------------
> >
> > > 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