Pascal,
I have not yet had a chance to look at your proposed dictionary addon. But
I will. And it is nice that Raul is paying attention.

I want to strongly second your comment that locales are not at all
appropriate for this.

Locales are good for what they are good for. Using them for a serious
implementation of a data structure is a wrong and a serious misuse. Next
stop would be a locale based implementation of integer arrays.

I

On Mon, Mar 14, 2022 at 4:23 PM 'Pascal Jasmin' via Programming <
programm...@jsoftware.com> wrote:

> I'll remind "the world" that a dictionary implementation has been
> published: https://github.com/Pascal-J/kv
>
> I'll defend it as being the most J friendly implementation for having
> functional access + manipulation features, it further has, through the kvO
> adverb, the ability to J-optimize access at the expense of future
> manipulation.  J is mostly considered a tool for structuring information
> prior to querying/subsetting it.  A locale based state-oriented dictionary
> approach makes it overhead/difficult to extract information subsets, and
> adds object management difficulties on top of the access.
>
>
> To paraphrase Hitchhiker's galaxy, "first God/J/Ken created OOP and
> locales, and everyone agreed that was terrible"
>
>
>
> On Monday, March 14, 2022, 10:01:28 a.m. EDT, Michal Wallace <
> michal.wall...@gmail.com> wrote:
>
>
>
>
>
> It's true that dictionaries aren't really a "fundamental" data type, since
> they're easy to implement atop arrays.
> But I think for a lot of people, they've become a fundamental "thinking
> type"...
>
> I think jan-pieter's requirements list is a good start. I would add:
>
> - nice syntax for constructing the mapping as a list of pairs rather than a
> pair of lists.
> - nice syntax for traversing nested structures
> - ability to write "accessor" methods that intervene
> - ability to chain dictionaries together (to give search paths like locales
> have)
>
> I've mentioned before that I think there could be a real benefit to having
> a nested namespace model for locales.
> I think it would be nice if, when you imported a module from path
> 'foo/bar/baz', you could trust that it would load
> something into a namespace that had a corresponding nested path name.
>
> That does raise the question about how to make navigating a path play nice
> with J's right-to-left syntax.
>
> In other words, I think locales already do much of what we want for
> dictionaries, but I'm not sure if they're implemented
> in terms of hashtables. (AFAIK, k3 doesn't even use hash tables for
> dictionaries. It's always just a linear lookup.)
>
> One thing that is missing is the ability to have arbitrary (non-identifier,
> or even non-string) keys, or the ability to fetch multiple values at once.
>
> In j-kvm (that console library I've been working on),  I implemented a
> simple verb that I really wish had a standard name in J:
>
> of =: {{ (x,'__y')~ [ y }}"1 0
>
> My ui widgets have two separate flags related to display: V__w indicates
> that w is visible, and R__w indicates that it's in need of a refresh.
> So when it comes time to render an application with list of widgets W: I
> can select both flags at once from all the widgets:
>
> render =: {{
>   for_w. W #~ *./'VR' of "0 W do.
>     NB. render w
>   end. }}
>
>
>
> On Mon, Jan 31, 2022 at 1:27 PM Henry Rich <henryhr...@gmail.com> wrote:
>
> > I have looked into this quite a bit.  I am not convinced that Dictionary
> > is a fundamental datatype like number or letter, or that the current
> > symbol support is deficient.  That makes the first questions What is a
> > Dictionary? and Where can a Dictionary be used in J?
> >
> > The use case that would be important to me is a key-value store, aka
> > associative memory, where the Dictionary remember keys and values and
> > later returns a value when presented with the key. This feels to me like
> > a package written in J rather than a J primitive.  A Dictionary would be
> > a numbered locale.  The place where I could see added support inside J
> > would be in adding to and deleting from hashtables, specifically ones
> > created/used by m&i. .
> >
> > I invite proposals on what a Dictionary package needs to do.  I have
> > done this before, and Jan-Pieter Jacobs responded with a package.
> > Quoting from his message of 20210327:
> >
> > *** QUOTE
> >
> > install'github:jpjacobs/types_dict@main'
> >
> > (except on (my) android, where github installs don't seem to work,
> neither
> > in the Gui version JA nor on the commandline via termux)
> >
> > It is pretty simple in use, you just use:
> > d=: dict keys;vals
> > for creating the dictionary, which is a OOP object, having the following
> > methods:
> > get, set, map, sort, destroy, whose documentation is contained in
> > help_pdict_
> >
> > For performance, the create verb precomputes the lookup for the get verb,
> > both forward get (key->value) and backward get inv (value->first key)
> upon
> > object creation.
> >
> > *** END QUOTE
> >
> > I have not looked into this package, but it seems to me to have the
> > right entry points.  Can we take that as a starting point to see what
> > needs to be added?  The first step of course would be to put the addon
> > under Package Manager.
> >
> > Henry Rich
> >
> >
> >
> > On 1/31/2022 12:58 PM, Elijah Stone wrote:
> > > I agree with Eric regarding the challenges of adding dictionaries.
> > >
> > > One issue: I think a necessary prerequisite is improved symbols.
> > >
> > > On Mon, 31 Jan 2022, Alex Shroyer wrote:
> > >
> > >> I agree with Raoul that competing with Python is not a good idea.
> > >> But J can learn from Python's decisions (good and bad) to grow and
> > >> improve.
> > >> In my opinion, numpy is Python's "killer app" because it brings
> > >> reasonable
> > >> performance without much conceptual overhead.
> > >> The feature of Python that enabled numpy is its extensibility, down
> > >> to the
> > >> C layer.
> > >>
> > >> There are other good features of Python that J could copy, in
> particular
> > >> the 'dictionary' data type.
> > >> The array language K has dictionaries, so J might take some
> inspiration
> > >> from there for integrating them into the language.
> > >>
> > >> Cheers,
> > >> Alex
> > >>
> > >>
> > >> On Mon, Jan 31, 2022 at 5:30 AM Raoul Schorer <
> raoul.scho...@gmail.com>
> > >> wrote:
> > >>
> > >>> Just my 2c, but I think that competing with python in general is
> > >>> somewhat
> > >>> delusional. I think the key point for expanding J use to have a
> > >>> "killer J
> > >>> app". For example, an improved clone of or excellent plugin for
> > >>> VisiData (
> > >>> https://www.visidata.org/) is my idea of a killer app. But someone
> > here
> > >>> may
> > >>> have a better idea?
> > >>>
> > >>> Cheers,
> > >>> Raoul
> > >>>
> > >>> Le lun. 31 janv. 2022 à 03:49, Ric Sherlock <tikk...@gmail.com> a
> > >>> écrit :
> > >>>
> > >>> > Yes from a data structure point of view, inverted tables get you a
> > >>> lot of
> > >>> > the way (note they're also available in the 'general/misc' addon -
> > >>> load
> > >>> > 'general/misc/inverted' ) and I've used them to good effect in my
> > >>> > 'data/struct' addon (https://github.com/tikkanz/data_struct).
> > >>> > I agree that J's arrays are more general, flexible & powerful. But
> > >>> when
> > >>> > you're dealing with a tabular data set there is an overhead to
> > >>> keeping
> > >>> the
> > >>> > fields in a table in sync that dataframes can help with. Perhaps
> it's
> > >>> > something abstracting the structure so you don't have to deal so
> much
> > >>> with
> > >>> > the mechanics of manipulating it? At least for me :)
> > >>> >
> > >>> > On Mon, Jan 31, 2022 at 3:28 PM Elijah Stone <elro...@elronnd.net>
> > >>> wrote:
> > >>> >
> > >>> > > https://code.jsoftware.com/wiki/Essays/Inverted_Table, perhaps?
> > >>> > >
> > >>> > > That said, I think a great strength of j is that data are _not_
> > >>> > explicitly
> > >>> > > tabular.  The associations are defined in an ad-hoc manner as
> > >>> needed by
> > >>> > > the programmer.  This is also an essential difference between
> > >>> the array
> > >>> > > paradigm and the relational paradigm (cf SQL): in the former,
> > >>> pointers
> > >>> > > come with implicit context; in the latter, that context must be
> > >>> explicit.
> > >>> > >
> > >>> > >  -E
> > >>> > >
> > >>> > > P.S. regarding analysis/optimization: I would love to see it,
> > >>> but for
> > >>> > some
> > >>> > > reason everybody is scared of building a compiler because of the
> > >>> parsing
> > >>> > > problem.
> > >>> > >
> > >>> > > On Mon, 31 Jan 2022, Ric Sherlock wrote:
> > >>> > >
> > >>> > > > Yes, I've been thinking that a Dataframes equivalent in J
> > >>> would be
> > >>> > > useful.
> > >>> > > > Most things are already possible with J's arrays, but
> > >>> conceptually
> > >>> > > > DataFrames are well understood by many now, and they make it
> > >>> easy to
> > >>> > work
> > >>> > > > with datasets as named fields.
> > >>> > > > I've spent a reasonable amount of time working with Pandas,
> > >>> but have
> > >>> > > > recently been using Polars (Rust backend with Python bindings)
> > >>> which
> > >>> > > really
> > >>> > > > shines for larger datasets. Performance (especially
> > >>> read/write) is
> > >>> > > awesome,
> > >>> > > > and the LazyFrames which optimise your query/analysis plan
> > >>> make a big
> > >>> > > > difference too.
> > >>> > > > I haven't taken enough time to explore it, but maybe Jd is the
> > >>> starting
> > >>> > > > point in this space for J?
> > >>> > > >
> > >>> > > >
> > >>> > > > On Mon, Jan 31, 2022 at 9:01 AM Michail L. Liarmakopoulos <
> > >>> > > > m.l.liarm...@gmail.com> wrote:
> > >>> > > >
> > >>> > > >> Hello all,
> > >>> > > >>
> > >>> > > >> I find any parallels between python and J pretty interesting,
> > >>> being
> > >>> a
> > >>> > > >> person with some python experience and an interest of the
> > >>> applications
> > >>> > > of
> > >>> > > >> both python and J in mathematical modelling, analytics,
> > >>> computational
> > >>> > > math
> > >>> > > >> and perhaps computational physics too.
> > >>> > > >>
> > >>> > > >> If you'd like to bring some features from the python
> > >>> math/analytics
> > >>> > > >> libraries/ecosystem in J, I'd suggest you to look at the
> > >>> features of
> > >>> > > three
> > >>> > > >> libraries:
> > >>> > > >>
> > >>> > > >> - numpy (I believe most features are already covered from the
> > >>> built
> > >>> in
> > >>> > > >> features of an array language such as J)
> > >>> > > >>
> > >>> > > >> - pandas ( a nice library for manipulating csv files within
> > >>> python
> > >>> as
> > >>> > > >> dataframe objects -- see the dataframes from the R language)
> > >>> > > >>
> > >>> > > >> - scipy (a collection of methods and functions ranging from
> > >>> solving
> > >>> > > >> numerically: differential equations, evaluating definite
> > >>> integrals,
> > >>> > > >> constrained and unconstrained optimization, and I believe
> > >>> statistics
> > >>> > > too)
> > >>> > > >>
> > >>> > > >> There is also out there an amazing python library for symbolic
> > >>> > > calculations
> > >>> > > >> (like the ones you can do with Mathematica or WolframAlpha:
> > >>> symbolic
> > >>> > > >> evaluation of definite and indefinite integrals, symbolic
> > >>> solutions
> > >>> of
> > >>> > > >> diff. equations, symbolic solutions of algebraic and
> Diophantine
> > >>> > > equations
> > >>> > > >> etc...).  It's called sympy.
> > >>> > > >>
> > >>> > > >> But I'm not sure if you'd like J to include symbolic
> > >>> computations
> > >>> too
> > >>> > > or if
> > >>> > > >> the aim of the language is to excel only in numerics, data
> > >>> analytics,
> > >>> > > >> stats, whatever can be quantified pretty much.
> > >>> > > >>
> > >>> > > >> My few cents as food for thought.
> > >>> > > >>
> > >>> > > >>
> > >>> > > >> Best regards,
> > >>> > > >>
> > >>> > > >> ---
> > >>> > > >> Michail L. Liarmakopoulos, MSc
> > >>> > > >>
> > >>> > > >> On Sun, Jan 30, 2022, 20:39 R.E. Boss <r.e.b...@outlook.com>
> > >>> wrote:
> > >>> > > >>
> > >>> > > >> >
> > >>> > > >> >
> > >>> > > >> > I copied the first chapter of the book A Journey to Core
> > >>> Python
> > >>> (in
> > >>> > > >> >
> > >>> > > >>
> > >>> > >
> > >>> >
> > >>>
> >
> https://drive.google.com/file/d/1p1uIANh-LFniNNRqjDeeWWd4_-ddEZmz/view?usp=sharing
> > >>>
> > >>> > > >> )
> > >>> > > >> > and have the question: do we want that J is competitive with
> > >>> Python?
> > >>> > > >> >
> > >>> > > >> > If the answer is yes, the next question is: what is the to
> > >>> do list
> > >>> > to
> > >>> > > be
> > >>> > > >> > competitive and how long will it take?
> > >>> > > >> >
> > >>> > > >> > (And then the unavoidable question: WHY?)
> > >>> > > >> >
> > >>> > > >> >
> > >>> > > >> >
> > >>> > > >> > Personally I think we must aim on the niches in the market,
> as
> > >>> there
> > >>> > > are
> > >>> > > >> > the mathematical oriented people, e.g. the broad scientific
> > >>> > community.
> > >>> > > >> >
> > >>> > > >> > Then all people experienced in Excel or other spreadsheets
> or
> > >>> > > calculation
> > >>> > > >> > tools.
> > >>> > > >> >
> > >>> > > >> > Schools and universities. Financial and statistical oriented
> > >>> people.
> > >>> > > >> >
> > >>> > > >> >
> > >>> > > >> >
> > >>> > > >> > What we should do, IMHO, is
> > >>> > > >> >
> > >>> > > >> > - to emphasize the strengths of J,
> > >>> > > >> >
> > >>> > > >> > - to improve (considerably) the error handling of J,
> > >>> > > >> >
> > >>> > > >> > - to admit the steep learning curve,
> > >>> > > >> >
> > >>> > > >> > - to facilitate the use of mnemonics instead of primitives
> (I
> > >>> tried
> > >>> > > this
> > >>> > > >> > afternoon the primitives.ijs for half an hour, but was not
> > >>> capable
> > >>> > of
> > >>> > > use
> > >>> > > >> > any mnemonic, not even with
> > >>> > > >> > https://code.jsoftware.com/wiki/Primitives_to_Mnemonics)
> > >>> > > >> >
> > >>> > > >> > - to decide which of the features, benefits or applications
> > >>> (of
> > >>> > > Python)
> > >>> > > >> we
> > >>> > > >> > want J to have.
> > >>> > > >> >
> > >>> > > >> >
> > >>> > > >> >
> > >>> > > >> >
> > >>> > > >> >
> > >>> > > >> > Just my 2 cents.
> > >>> > > >> >
> > >>> > > >> > R.E. Boss
> > >>> > > >> >
> > >>> > > >> >
> > >>> > > >> >
> > >>> > > >> >
> > >>> > > >> >
> > >>> > > >> >
> > >>> > > >> >
> > >>> >
> > >>>
> ----------------------------------------------------------------------
> > >>> > > >> > 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
> >
> >
> > --
> > This email has been checked for viruses by AVG.
> > https://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

Reply via email to