I hope you find me an idiot, but isn't that what a DBMS does? Maybe the
DBMS in J could be extended a little to do all this.

On Mon, Jan 31, 2022, 6:22 PM 'Pascal Jasmin' via Programming <
programm...@jsoftware.com> wrote:

> Beyond dictionaries is a "generic data structure" construct, and a large
> extended family of data structures that can respond to the following
> commands
>
> GET SET UPSERT APPEND DELETE INSERTafter(item) INSERTbefore(item) WHEREget
> CONVERTtoJnativearray UPSERTfromJnativearray
>
> in addition to dictionaries, ragged nested arrays or generally any binary
> encoding of datatype;shape/count;content
>
> for dictionaries, some applications (or at least language implementations)
> permit variant/inconsistent type keys and/or values.
>
> and generally, a table is a dictionary with
>
> multiple keys and multiple associated values to each unique combination of
> the multiple keys.  With potential performance advantages to keeping it in
> a sorted order if retrieval of items by query, or having multiple fields
> indexed.  Typed "tables"/dictionaries get inherent performance advantages
> due to not requiring item boxing.
>
> as a generic "pattern framework" for data structures without using classes:
>
> DEFAULT =: ''
>
> data dataconstructor DEFAULT  NB. dataconstructor is conjunction that will
> return an adverb that is (conjunction data).  example
>
> mydict = ('key1'; value1) dict DEFAULT  NB. an adverb that is a
> conjunction bound to specific data, and where the conjunction code responds
> to commands in list above top.
>
> The list of commands near top of this message are actually numeric codes
> that get passed to the bound datastructure adverb.
>
> GET mydict becomes a verb that will retrieve items.
> SET mydict returns an conjunction with m as key, n as value that will
> return the same mydict adverb but with updated "data"
> (newkey; SET) mydict returns an adverb that is above conjunction with m
> bound as newkey
> (newkey: newdata; SET) mydict directly returns the updated mydict adverb.
>
> In the case of typed/consistent dictionaries, the internal data
> representation is just an inverted table of "fields".  And while the
> underlying conjunction of mydict is bound to data to form an adverb, a
> generic (consistent typed) dictaccess conjunction can operate on any
> inverted table if prebound with GET/SET.  And the GET/SET/OTHER "commands"
> can form a verb as a result of paired with a generic access adverb, all
> "command parameters" as x, and the inverted table/data structure as y.
>
> What makes this approach have more appeal to be over classes is besides
> issues like reference management  and it is hard to send methods to
> class/objects in a "parameterized" way, is that arrays are J's
> first/primary datastructure, and in some datastructures can be
> transparently accessed by independent J code.
>
> Generally, putting the complexity in modifiers instead of classes is a
> functional approach I would prefer.  I can volunteer to start it off at
> least if there is interest in this approach.
>
> It would be a datastructure access "language/dsl" on top of J.
>
>
>
>
> On Monday, January 31, 2022, 01:43:30 p.m. EST, Henry Rich <
> henryhr...@gmail.com> wrote:
>
>
>
>
>
> Quite right.  Jan-Pieter has at least a good start on the model.  What I
> am suggesting is that the 'more integrated implementation' might not
> need to be much more integrated than the J script.  Searching and
> sorting are already J primitives.
>
> The deficiency in J is that m&i. gives you a hashtable for searching m,
> but if you modify m you have to recalculate the hash from scratch.  This
> makes m&i. a good read-mostly Dictionary but slow for frequent updates.
> If we can refine the model to the point that such inefficiency is the
> worst problem we have, a little integrated support could finish the
> package.
>
> Henry Rich
>
> On 1/31/2022 1:37 PM, Eric Iverson wrote:
> > A good and complete model is the first step. Then it is a matter of how
> > much it is used and what drawbacks it might have that would be addressed
> by
> > a more integrated implementation.
> >
> > 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
>
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to