I don't remember ever talking to Ken about this one, but I can tell you I was quite upset when APL 2 changed the rules for reshape.
In my mind reshape would require special case handling to assume the need for knowing the data type of the empty. Reshape doesn't ever provide missing elements. It's sole task is to use the existing elements until something the size requested is provided. There is no amount of looping which can turn nothing into something, therefore I believe quite properly a domain error. On Mon, Feb 20, 2023, 6:27 AM Jan-Pieter Jacobs <[email protected]> wrote: > Looking through the implementation of dev/eformat, I found this line which > puzzled me: > > https://github.com/jsoftware/dev_eformat/blob/4c285152bb27c2bfcb474738ea3b839e4ce96d0d/eformat.ijs#L496 > > There's nothing wrong with that line, or with the fact it triggers an > error, but it does indicate that $ raises an error in a situation where {. > does not, i.e. reshaping an empty array errors, while overtaking from one > does not. > > Indeed, 5 $ '' or 5$ 0$0 give an error, while 5 {. '' and 5 {. 0$0 just > work, producing arrays of 5 spaces or zeros as expected. 5 $!.'' '' also > works, as does 5$!.1 ''. > Why wouldn't $ be able to see the data type (and thereby, fill element) of > it's y argument, and fill accordingly? As far as I remember, any noun in J > has a datatype, and a fill element. As the the fill element is a scalar, > the dimensionality being different in the case of $ shouldn't matter > either. > > Is there anything I'm missing, or is this really an inconsistency without > any reason for existence? > > Best regards, > Jan-Pieter > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm > ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
