My list would be different: 1. don't clone arrays unnecessarily
2. improve support for parallel processing With these, GNU APL would be much more efficient. I think moving the focus to CPU and memory efficiency is much more important than adding extensions of any sort. --blake On Tue, Jul 4, 2017 at 1:59 AM, Elias Mårtenson <loke...@gmail.com> wrote: > Thank you Jürgen, > > I think we understand each others positions, and agree that they are not > entirely the same. > > That said, your points are very well taken, and for the most part I > actually agree with you. > > I have a wishlist of features that I personally believe are important. For > the most part, these have been discussed previously but here they are for > completeness sake: > > 1. Bignums > 2. Lexical binding. > 3. First-class functions. > 4. Rational numbers > 5. Some kind of easy-to-use imperative structure (i.e. something > better than the horrific :If :Then :Else structure in Dyalog) > 6. Some kind of complex datastructure (again, something better than > the Dyalog classes) > > Note that out of these, the only feature that would change the semantics > compared to the ISO spec is the first, bignums. At least if it's > implemented in the "natural" way. > > I've considered working on some of these myself, but I have no intention > of doing so if you're against these ideas in principle. I certainly have no > desire to maintain my own version. > > Regards, > Elias > > On 4 July 2017 at 03:21, Juergen Sauermann <juergen.sauerm...@t-online.de> > wrote: > >> Hi Elias, >> >> thanks for explaining your position. >> >> My concern about free software is not so much political but more >> practical. >> >> If I look at programming languages, then my impression is that those >> languages that make the >> exchange of software simple are more successful than those that do not. >> >> Historically it has always been possible to exchange APL software from >> one interpreter to another, >> but it was never easy. Most of the code can be exchanged via *.ATF* >> files, but the problems were >> often tiny incompatibilities. These incompatibilities are spread all over >> the code, so getting some >> APL workspace to work on a different machine is still an adventure. >> >> That is why I prefer to stick to the ISO standard, no matter how bad it >> is. As long as you use only >> standardised APL functions you have very few compatibility problems. >> There are some, but they >> are well known. But every new function that is not standardised moves you >> away from portability. >> If I object to implementing some new function than this is not for >> political reasons, but because I >> am afraid that the additional incompatibility makes the exchange of APL >> software more difficult. >> >> In some cases the function is so important that the incompatibility has >> to be accepted. Examples >> for that are certainly ⎕SQL, ⎕FIO, and maybe dyadic ⎕CR and ⎕DLX. These >> functions are almost >> impossible to implement efficiently by APL's own means. >> >> On the other end (from my point of view) we have things like the KEY >> function. I still believe that it >> rather fits into the FinAPL Idiom Library than into GNU APL. It is >> shorter than one APL line and if >> you make it an idiom then it remains portable between all APL >> interpreters while otherwise it is only >> portable between GNU APL and Dyalog APL. >> >> I am open to implementing a feature if it is really useful, but only >> then. Becoming a leader in >> implementing new feature is not one of my priorities. There are enough >> other APLs that are >> keen on that (e.g. Dyalog and NARS, see http://www.nars2000.org). The >> ambition of GNU APL >> has always been to become a stable standard interpreter some day. That is >> difficult enough, and >> we have learned from PL/I how too many features can kill a language. And >> I have seen too many >> software projects that failed due to being overly ambitious. I simply do >> not want to share their fate. >> >> Regarding emacs, I can't help to note that I am not using it, because it >> is, for my taste, too complex. >> I rather prefer something simpler like vi. Sometimes less is just more. >> >> Best Regards, >> /// Jürgen >> >> >> On 07/03/2017 04:00 PM, Elias Mårtenson wrote: >> >> Hello Jürgen, and thanks for your thorough reply. >> >> In terms of the usefulness of Key, I don't disagree with you. I'd >> certainly like to see even more flexible solutions. >> >> Where we do disagree is what the goal of free software is. Arguably there >> are probably as many goals as there are people. >> >> What follows below is an explanation as to why I disagree with your >> assessment as to what is the best for Free Software. Please don't take it >> as personal criticism. You know that I have the deepest respect for you as >> the maintainer and author of GNU APL. >> >> After spending quite some time on the Emacs Development mailing list, I >> have learned quite a bit about what the FSF's goals are with regards to >> what they call "Free Software". Time and time again, RMS has stated that >> the goal of GNU is to make people use commercial software less. In order >> words, if a project can implement a feature that draws people away from >> commercial software towards Free Software, then that is what the project >> should do. >> >> At this point, I'd like to clarify that I am not completely in agreement >> with RMS on this. In the Emacs project, this position has prevented Emacs >> from gaining certain important features, simply because they would have >> made it easier to use "non-free" software together with Emacs. This is a >> position I don't agree with. >> >> I'd really like to see GNU APL become a leader in implementing new >> features. That way perhaps we get more people to switch. The point I'm >> making here is that by implementing useful features that would make people >> choose GNU APL before any alternative, then the project would better serve >> the GNU goals. >> >> Regards, >> Elias >> >> On 3 July 2017 at 21:36, Juergen Sauermann <juergen.sauerm...@t-online.de >> > wrote: >> >>> Hi Elias, >>> >>> thaks. The explanation is a bit clearer but the problems remain. >>> >>> Key is a non-standard APL function and we should be careful with the >>> implementation >>> of non-standard functions. >>> >>> Every function in GNU APL is an invitation to use it. If the function is >>> obviously useful then it improves >>> the language. If it merely solves a particular programming case, then it >>> may improve GNU APL a little, >>> but at the price of incompatibility. Programs using it become less >>> portable and that undermines the >>> goal of free software. >>> >>> So the question in such cases is how useful is a function and is that >>> usefulness worth the incompatibility? >>> >>> In the case of the key function I would say no. >>> >>> First of all the key function can only be used if the data it operates >>> on is organized in a specific way: that >>> the first column is the key. That may be the case but the fact that this >>> is needed is somewhat contrary to >>> how other APL function work. You could also call that arbitrary. >>> >>> That goal can easily achieved by other means. If I have a single *KEY* >>> then something along the lines of >>> >>> *((DATA[1;]≡KEY)⌿KEY)[1;]* >>> >>> will give me the first row (or all rows if I remove the right [1;]) in >>> an array that has that KEY. I suppose that is >>> more or less what the key function does (plus applying some function on >>> that expression). The expression is >>> even superior to a function because it can be used at the left side of >>> an assignment. >>> >>> If that is so then the key function is only one of several APL idioms >>> (see http://aplwiki.com/FinnAplIdiomLibrary >>> for a rather famous list of more than 700 such idioms). Each of the >>> 700+ idioms is useful and would deserver >>> its own symbol, but if we would do so (which is technically possible due >>> to Unicode) then we would have turned >>> GNU APL into an unreadable mess. >>> >>> Best Regards, >>> Jürgen Sauermann >>> >>> >>> >>> >>> On 07/03/2017 05:50 AM, Elias Mårtenson wrote: >>> >>> The key function is better described in the Dyalog reference manual, on >>> page 153 here: http://docs.dyalog.com/16.0/Dyalog%20APL%20Language%20 >>> Reference%20Guide.pdf >>> >>> Essentially, it's a grouping function. It's used to create groups of >>> similar things, and apply a function on the individual instances. The >>> examples in the section I referenced above should be pretty clear, I think. >>> >>> Regards, >>> Elias >>> >>> On 3 July 2017 at 00:51, Juergen Sauermann < >>> juergen.sauerm...@t-online.de> wrote: >>> >>>> Hi Elias, >>>> >>>> I am not quite in favour of it and it has problems. >>>> >>>> It is not on my keyboard (even though I am using a Dyalog keyboard). >>>> Not to talk about other keyboards. >>>> >>>> It does not really look like need-to-have function and I suppose it can >>>> be >>>> efficiently performed by a short combination of other APL primitives. >>>> >>>> In my opinion adding primitives for every imaginable use case (and >>>> there are certainly use cases for the key function) leads to an >>>> overloading >>>> of the APL language in the long run and does not improve the language. >>>> >>>> Another problem is that after reading the description several times, I >>>> still >>>> can't explain in simple terms what the function is actually doing. >>>> That makes it >>>> a good candidate for a never used function if it should ever be >>>> implemented. >>>> >>>> Best Regards, >>>> Jürgen Sauermann >>>> >>>> >>>> >>>> >>>> On 07/02/2017 06:24 PM, Elias Mårtenson wrote: >>>> >>>> How about implementing the key function, ⌸? >>>> >>>> It's described in this article on the Dyalog site: >>>> https://www.dyalog.com/blog/2015/04/exploring-key/ >>>> >>>> Jürgen, are you in favour of this function? >>>> >>>> Regards, >>>> Elias >>>> >>>> >>>> >>> >>> >> >> >