Boyko - You and I are falling into the same trap. Applying our knowledge from other areas rather than trying to understand what is being described. You jumped on the ambiguity of "between". I jumped on "variable". Perhaps the J dictionary needs clarification. Personally I am satisfied with it as it is. I got turned off on Hascell when in encountered the statement saying that a variable can't vary. I feel that that statement needs to be corrected. In addition, if all documents on Hascell use that same definition I feel that they need to be fixed.
Is my objection well founded? I don't know. I do understand the intent in that intro document was that "variable" in that context is to mean "a name once assigned a value cannot be changed". If I accept that then I can proceed with the rest of the document. Does my concern mean that every document on Hascell needs to be fixed? I doubt it. I accept the statement "The sum of the angles of a triangle is 180 degrees" is valid without the qualification of "a triangle in a plane". But we all know that without that qualification the statement is not always true. Unless we want to quibble about the definition of a triangle since the lines of a triangle on a sphere are not straight. Unless we want to quibble on the definition of "straight". On Wed, Apr 13, 2011 at 7:10 AM, Raul Miller <[email protected]> wrote: > On Wed, Apr 13, 2011 at 7:43 AM, Boyko Bantchev <[email protected]> wrote: > >> This can only be true if you have ignored large parts of the dictionary. > > > > Apart from the fact that we are discussing a particular definition, your > > statement is rather vague. Thus it is not possible to discuss it. > > For example, the uses of / in > http://www.jsoftware.com/help/dictionary/d300.htm and in > http://www.jsoftware.com/help/dictionary/d430.htm (but those are not > the only pages where the dictionary contains examples of insert.) > > >> For example: +/ is sum. The sum of a single item list should be > obvious. > > > > In a programming language, I consider obvious only things that are > clearly > > defined in it, and things which can be logically deduced from them. > > Notions such as `should be obvious' have nothing to do with the rigour > > and accuracy that one expects from formal definitions. > > As a general rule (except where they are not possible or not > practical) they do in J. > > And, it's not clear why we should be allowing specifications for other > languages define J. > > >> If by /'s definition you mean just that one page, ignoring all of the > >> rest of the dictionary, and anything that a person might use to find > >> the definitions of the words and symbols used? > >> > >> Yeah, ok, that would not define anything at all. > > > > Again, you are making a very vague statement here. Of course, I am > > not ignoring `all of the rest of the dictionary', but everything specific > of a > > programming construct must be said clearly and exhaustively in that > > object's definition. This is where the definition of / is wanting. > > This simulates your proposed alternative definition for -/ > mred=: 3 :0 > assert 1~:#y > -/y > ) > > This illustrates what your proposed change would mean for one of the > examples in the dictionary: > mred .* >1 6 4;4 1 0;6 6 8 > |assertion failure: assert > | assert 1~:#y > > >>> Besides, consider the following hypothesis. Let us pretend that the > DoJ > >>> didn't define u/y for an empty y. Then, if it were true that from the > absence > >>> of the possibility to apply u you could still infer /'s behaviour, you > should > >>> be able to tell what that behaviour would be. So, could you tell what > >>> would u/$0 have to return then, and why? > >> > >> I do not understand this question. > > > > You keep insisting that the meaning of u/y for 1=#y can be deduced > despite > > of the DoJ not saying explicitly what u/y in that case is. You are > assuming > > that it is nevertheless deducible, right? If that is true, then isn't > > it also true, > > and for the same reason, that it must be possible to infer the meaning of > > u/y for 0=#y as well? > > I see illustrations for the 1=#y case which do not deal with the 0=#y case. > > > So, imagine that the DoJ did not explicitly define u/y > > for an empty y, and tell us: what do you think the meaning of u/$0 must > be > > then? > > I currently do not know. It's an exceptional case. > > >> I posted that in a followup -- the determinant of a 1 by 1 matrix is > >> the single number in that matrix. > >> But that was not really necessary. Any use of that definition for > >> determinant is going to be using -/ on single item lists. And larger > >> matrices require the long right scope that J uses. > > > > We are discussing how precise the definition of / in J is, and you are > talking > > of determinants, referring to algebraic concepts that themselves have > nothing > > to do with programming, let alone J?! > > Yes, yes, no. (You asked a three part question.) > > > Are you saying that, as part of the definition of a programming construct > -- one > > that is essentially a loop -- I must consider all possible uses of > > that construct > > in all sorts of application domains? That I should only infer the > definition > > through its imaginable uses? Oh my! > > No, you do not need to consider all possible uses. > > However, before your treatment can be considered complete, you must > consider all uses explicitly provided by the dictionary. > > And, you should consider other typical uses. (A trivial > implementation of J, which only gave correct answers for dictionary > examples and gave "nonce error" for everything else, would not be > worthwhile.) > > -- > Raul > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm > ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
