i just want to reiterate
the point Alex Shroyer made
about k dictionaries
i found them extremely useful
and upon occasion
groused about not having them in J
i used them to represent
an (English) dictionary
very facile efficient and fast
the fact is our world
is (mostly) filled
with ragged objects
... not the regular arrays
that J folk so love
eg
HTML
language dictionaries, encyclopedias...
outlines...
~greg heil
picsrp.github.io
i.tgu.ca/real_cal
--
from: Henry Rich <henryhr...@gmail.com>
to: programm...@jsoftware.com
date: Jan 31, 2022, 10:43 AM
subject: [Jprogramming] Dictionaries WAS: Report on the J wiki meeting
of January 27, 2022
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
--
from: Eric Iverson <eric.b.iver...@gmail.com>
to: Programming forum <programm...@jsoftware.com>
date: Jan 31, 2022, 10:37 AM
subject: Re: [Jprogramming] Report on the J wiki meeting of January 27,
2022
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.
--
from: Henry Rich <henryhr...@gmail.com>
to: programm...@jsoftware.com
date: Jan 31, 2022, 10:27 AM
subject: Re: [Jprogramming] Report on the J wiki meeting of January 27,
2022
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
--
from: Elijah Stone <elro...@elronnd.net>
to: programm...@jsoftware.com
date: Jan 31, 2022, 9:58 AM
subject: Re: [Jprogramming] Report on the J wiki meeting of January 27,
2022
I agree with Eric regarding the challenges of adding dictionaries.
One issue: I think a necessary prerequisite is improved symbols.
--
from: Eric Iverson <eric.b.iver...@gmail.com>
to: Programming forum <programm...@jsoftware.com>
date: Jan 31, 2022, 8:36 AM
subject: Re: [Jprogramming] Report on the J wiki meeting of January 27,
2022
It seems to me that the big distinction between J and python where J
falls far short is not in the core language but in the addon libraries. I
encourage J fans to work away at adding important addons to J!
--
from: Eric Iverson <eric.b.iver...@gmail.com>
to: Programming forum <programm...@jsoftware.com>
date: Jan 31, 2022, 8:28 AM
subject: Re: [Jprogramming] Report on the J wiki meeting of January 27,
2022
--
A J dictionary type is a good idea and it has been kicked around many
times before. The hard part is not implementing it, but doing a careful and
thorough spec that is backed by a complete model written in J.
Presented with a full spec that had community buy in, would probably be
followed by implementation.
--
from: Alex Shroyer <ashro...@gmail.com>
to: programm...@jsoftware.com
date: Jan 31, 2022, 8:14 AM
subject: Re: [Jprogramming] Report on the J wiki meeting of January 27,
2022
--
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
--
from: Raul Miller <rauldmil...@gmail.com>
to: programm...@jsoftware.com
date: Jan 31, 2022, 7:02 AM
subject: Re: [Jprogramming] Report on the J wiki meeting of January 27,
2022
--
What does "competing with python" mean?
(I suspect that we must "compete" in some contexts, but I also imagine
that "competition" would be irrelevant in many, many contexts. But.. as a
programming exercise, I don't know how to conceptualize these distinctions.)
Thanks,
--
from: Raoul Schorer <raoul.scho...@gmail.com>
to: programm...@jsoftware.com
date: Jan 31, 2022, 2:30 AM
subject: Re: [Jprogramming] Report on the J wiki meeting of January 27,
2022
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
--
from: Ric Sherlock <tikk...@gmail.com>
to: Programming JForum <programm...@jsoftware.com>
date: Jan 30, 2022, 6:50 PM
subject: Re: [Jprogramming] Report on the J wiki meeting of January 27,
2022
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 :)
--
from: Elijah Stone <elro...@elronnd.net>
to: Programming JForum <programm...@jsoftware.com>
date: Jan 30, 2022, 6:29 PM
subject: Re: [Jprogramming] Report on the J wiki meeting of January 27,
2022
--
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.
--
from: Ric Sherlock <tikk...@gmail.com>
to: Programming JForum <programm...@jsoftware.com>
date: Jan 30, 2022, 6:21 PM
subject: Re: [Jprogramming] Report on the J wiki meeting of January 27,
2022
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?
--
from: Michail L. Liarmakopoulos <m.l.liarm...@gmail.com>
to: programm...@jsoftware.com
date: Jan 30, 2022, 12:06 PM
subject: Re: [Jprogramming] Report on the J wiki meeting of January 27,
2022
Hello Elijah,
Yes, I believe you're right. I don't have much experience with them yet
though, so I cannot compare.
Best,
---
Michail L. Liarmakopoulos, MSc
--
from: Elijah Stone <elro...@elronnd.net>
to: programm...@jsoftware.com
date: Jan 30, 2022, 12:04 PM
subject: Re: [Jprogramming] Report on the J wiki meeting of January 27,
2022
--
On Sun, 30 Jan 2022, Michail L. Liarmakopoulos wrote:
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.
Aren't there some symbolic calculus library functions?
(Though I doubt they're anywhere near the level of mathematica, let alone
sympy.)
--
from: Michail L. Liarmakopoulos <m.l.liarm...@gmail.com>
to: programm...@jsoftware.com
date: Jan 30, 2022, 12:01 PM
subject: Re: [Jprogramming] Report on the J wiki meeting of January 27,
2022
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
--
from: R.E. Boss <r.e.b...@outlook.com>
to: "programm...@jsoftware.com" <programm...@jsoftware.com>
date: Jan 30, 2022, 11:39 AM
subject: Re: [Jprogramming] Report on the J wiki meeting of January 27,
2022
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