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

Reply via email to