An empty tank zero array would be inconsistent.

The number of elements in an array is the product of its dimensions, and
the multiplicative identity is 1, not 0.

Thanks,

-- 
Raul

On Tuesday, December 19, 2017, Jimmy Gauvin <[email protected]> wrote:

> Hi,
>
> Thinking about nothing, specifically about the empty scalar or empty
> 0-cell.
>
> Erling H. -  " I experience an inconsistency in this model in the sense
> that an array of rank greater than zero can be empty, a 0-cell can not."
>
> The internal structure of a J array could support a rank 0 empty object.
> However, short of poking into memory, there does not seem to be a way of
> generating an empty scalar.
>
> ​┌───────┬─┬───────┬─┬─┬─────┬───┐
> │data   │ │type   │n│r│shape│val│
> ├───────┼─┼───────┼─┼─┼─────┼───┤
> │8      │ │integer│1│0│     │8  │
> ├───────┼─┼───────┼─┼─┼─────┼───┤
> │8 9    │ │integer│2│1│2    │8 9│
> ├───────┼─┼───────┼─┼─┼─────┼───┤
> │''     │ │literal│0│1│0    │   │
> ├───────┼─┼───────┼─┼─┼─────┼───┤
> │0$0    │ │boolean│0│1│0    │   │
> ├───────┼─┼───────┼─┼─┼─────┼───┤
> │0$8    │ │integer│0│1│0    │   │
> ├───────┼─┼───────┼─┼─┼─────┼───┤
> │0 0 0$8│ │integer│0│3│0 0 0│   │
> ├───────┼─┼───────┼─┼─┼─────┼───┤
> │(0$0)$8│ │integer│1│0│     │8  │
> └───────┴─┴───────┴─┴─┴─────┴───┘
>  n = number of values
>  r = rank
>
> NB. Trying to get n=0 and r=0
>
>    (0$0) $ (0$0)
> |length error
> |   (0$0)    $(0$0)
>    (0$0) $ ''
> |length error
> |   (0$0)    $''
>
>
> ​
>
>
> On Tue, Dec 19, 2017 at 4:28 AM, Erling Hellenäs <[email protected]
> >
> wrote:
>
> > Hi all !
> >
> > In APL we had the same array model as in Fortran. An array was an array
> > and you indexed it like in most other languages, except that you could
> use
> > an array as index and therefore could get very varying results. The only
> > problems I personally experienced with this model was that you could not
> > put all the indexes in one variable. I also wanted to have the index to
> the
> > left. To keep the right-to-left normal flow of the language. I wrote
> > special indexing functions to handle this, but never used them in
> > production.
> >
> > In J we have the n-cell array model. A difference is that a scalar is
> just
> > another array, it just is imagined as having zero dimensions. I APL there
> > were scalars and there were arrays, basically two different data
> > structures. I experience an inconsistency in this model in the sense that
> > an array of rank greater than zero can be empty, a 0-cell can not. At
> least
> > in the interpreter I wrote, there is a lot of special handling of 0-cells
> > because they actually have content, although there are no array
> dimensions
> > which could reasonably contain any such content.
> >
> > In the dyadic rank operator a k-cell without any zero dimension can be
> > empty because a containing array is. This causes the very particular
> > special handling I mentioned in the thread "[Jprogramming] i. (2 2 $ 1 2
> 3
> > 4)"
> >
> > Simplicity is important for performance, it is important for our ability
> > to predict the behaviour of the code without testing it in the terminal
> and
> > to limit the number of test cases needed to verify the functonality of a
> > program.
> >
> > Is there any documentation of the design decision to select the n-cell
> > array model?
> >
> > Are there any threads in the forum where this array model is discussed?
> >
> > Maybe someone also wants to share their knowledge from internal
> > discussions about this design decision.
> >
> > Cheers,
> >
> > Erling Hellenäs
> >
> > ----------------------------------------------------------------------
> > 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