"
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?"
"

   NB. :D

   COFFE=. i.2 2
   MILK =. i.1 2
   CREAM=. i.2 1

   NB. Coffe with milk is not the same as coffe with cream

   (COFFE , MILK) -: (COFFE , CREAM)
0

   NB. However, even if no milk is not the same as no cream,

   NOMILK =. MILK  -. MILK
   NOCREAM=. CREAM -. CREAM

   NOMILK -: NOCREAM
0

   NB. coffe with no milk is the same as coffe with no cream

   (COFFE , NOMILK) -: (COFFE , NOCREAM)
1







On Thu, Jun 8, 2017 at 10:35 PM, Devon McCormick <[email protected]> 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/forum
> s.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
> >
>
>
>
> --
>
> Devon McCormick, CFA
>
> Quantitative Consultant
> ----------------------------------------------------------------------
> 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