I dug a little for an answer to Henry's first question: what's a
dictionary? I found 2 things:

1. We're not the only ones who seem confused about this definition.

2. I found this:
https://cs.stackexchange.com/a/30025/59926
that gives precise mathematical definitions, although still subject to
debate.

Cheers,
Raoul

Le mar. 1 févr. 2022 à 08:55, Elijah Stone <elro...@elronnd.net> a écrit :

> > I disagreed with 'symbols' in 1
>
> Roger Hui writes:
>
> > Premature optimization is said to be the root of all evil in programming
> > [Knuth 1974, p.671], but premature generalization is worse.  Premature
> > optimizations can at least be backed off
>
> If we start with only symbols as dictionary keys, then it is easy to let
> other objects be keys later; but it is much harder to do the reverse.
>
> In particular, I do not like (<<x) { y, and that is not necessary if only
> allowable keys are symbols.
>
>
> >  b. I envisioned Dic , newitem as the idiom to add an item to Dic.
> > newitem would be an item of Dic.
>
> I still do not understand.  A dictionary maps keys to values.  I infer
> from what you say that newitem is a value.  Where is the key?
>
>
> >     Duplicate keys are interesting and important.  There needs to be a
> > way to get the set of values associated with a key.
>
> Wait--one key can be associated with multiple values?  An array is now a
> multi-valued function?  I strongly object to that.
>
>
> > 2c. The number of keys is surely of interest, as is the number of
> > distinct keys.  There needs to be some way to query that, and ($ Dic)
> > seemed good for the number of keys; perhaps ($@~.) for the distinct keys
>
> Ah--what semantics were you envisioning for ~.?  I imagined that, if
> supported, ~.Dic would return a dictionary whose keys are a subset of
> Dic's, such that no two of the values are the same as each other.  The
> difficulty would be deciding, given two keys corresponding to the same
> value, which to pick.
>
> But given your mention of 'distinct keys' (and above the 'set of values
> associated with a key') I think we may still be talking about very
> different things when we say 'dictionary'.
>
>
> > 2e. This is a real issue.  You say 'keys should not be ordered' but I am
> > not sure about that.  This needs discussion.
>
> I think of an array as a function.  A function's domain is not inherently
> ordered.  We may impose some ordering on it; what should we impose (if
> anything)?
>
> J defines two orderings: < and /:.  Ordinary array's domains are sorted
> according to both.  Which is the interesting one?  I think it is <.  < has
> interesting properties; /: is simply total for the sake of being total.
> And as < is not total, it is not suitable for ordering dictionary keys.
>
> An alternative is to retain insertion order.  I think this is definitely
> better than ordering according to /:, but am still sceptical that it is
> worthwhile.  I still do not think of maps as having order.
>
>
> >> At least: domain (new primitive) index transpose amend apply-at-rank
> >> filter indices.  From rank follows any rank-0 operation.  Maybe: key
> >> catenate shape reshape nub index-of tally reduce.
> >
> > Please: when I was younger, I might have said 'What you say makes no
> > sense' to mean you were wrong; but after a long life of making mistakes
> > I mean no more than what I say: I don't get what you're saying.  It
> > might be that I'm dense.
>
> I definitely did not mean to imply that!  Just did not know what you
> were referring to.
>
> I think the following should definitely be supported:
>
> key { Dic
>
> |: Dic
>
> axes |: Dic
>
> values keys} Dic
>
> u"n Dic
>
> Dic # Dic
>
> I. Dic
>
> Because u"n Dic works, any primitive of rank 0 may be applied to a
> dictionary.  I think there should also be a new 'domain' primitive that
> gives the domain of an array.
>
> I think the following should perhaps be supported, but am not sure:
>
> Dic u/. Dic
>
> Dic , Dic
>
> $ Dic
>
> shape $ Dic
>
> ~. Dic
>
> # Dic
>
> u/ Dic
>
> Dic1 i. Dic2
>
> The last sentence results in a mapping from the keys of Dic1 to keys of
> Dic2 (call it R), where for any i, (i{Dic1) -: Dic2 {~ i { R.  Problems
> with i., /, ~., and /. are all the same: order.
>
>   -E
> ----------------------------------------------------------------------
> 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