[Jprogramming] The n-cell model of an array
Raul Miller
rauldmiller at gmail.com
Tue Dec 19 19:01:31 UTC 2017
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 <jimmy.gauvin at gmail.com> 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 <erling at erlinghellenas.se
> >
> 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
More information about the Programming
mailing list