Hi Roger,

    Your message was really helpful to me. Though I am certain that
my side of the elephant is valid, I am starting to see why your side is
 needed. I'd like a little time to clarify, but I will make a
couple of preliminary comments below. Any part of your message not
included is something that I am thinking about and will respond to later.

        You said:

- If "avoiding dyadic verbs and parentheses"
were design goals, I am not aware of them.
Obverse, square, decrement/increment are
useful in their own right, judged according to
Section 1 of "Notation as a Tool of Thought"
http://www.jsoftware.com/papers/tot.htm
(i.e. ease of expressing constructs arising
in problems, suggestivity, subordination of
detail, economy, and amenability to formal proofs.)

        O.K., but out of the original design goals, reduced parentheses is a
valuable by-product.

        You said

Regarding why there is v1@:v2@:v3 instead of
(v1 (v2 v3)), there is no document that tells
you the reason, but the answer is "obvious".
Which of the following is preferable?

v1 @: v2 @: v3 @: v4 @: v5 @: v6 @: v7
(v1 (v2 (v3 (v4 (v5 (v6 v7)))))

A less obvious reason is that having a symbol
for something makes it easier to talk about
(to reason about, to manipulate, etc.) that thing.

    That's really helpful. I don't like parentheses. My point was
    that neophytes would find it much easier to learn J if
    someone told them why they needed to use things.

    I will give you an analogy. I have been involved in a lot of
    amateur dramatics in my lifetime. It's a good relaxing team
    activity that is a lot of fun.

    Sometimes something happens on stage that the audience
    knows should not have happened. The most common
    occurrence is that someone drops something by mistake.
    It sits there in the middle of the stage. The audience
    concentrates on what is going to be done about this
    and finds it hard to concentrate on the play - until one of the
    actors picks it up and the audience can give its total focus
    back to the play.

    My point here is that when you tell your audience something
    that doesn't make sense and don't tell them why, they are
    still focusing on worrying about why and can't give their
    full attention to the next step.

    I keep saying that I don't wish to criticize your documentation,
    which is well written and thorough, but it is very weak in telling
    why. For example, Chapter 3 of "Defining Functions" says:

           square =: *:
           sum =: + /
           sumsq =: sum @: square

    When the neophyte knows that in the explicit form
    he/she has just learned, he/she can write:

            sum square y

    and:

            +/ *: y

    The argument that "@:" joins them together doesn't make sense.
    Weren't they joined together in:  +/*:y    ? However, if you say
    exactly what you have said above, that there are too many
    parentheses in expressions like:

            (v1 (v2 (v3 (v4 (v5 (v6 v7)))))

    and there is a way of avoiding all of these parentheses by
    linking them together:

            v1 @: v2 @: v3 @: v4 @: v5 @: v6 @: v7

    and that there is an additional benefit that it easier to talk about
    (to reason about, to manipulate, etc.) the structure further down
    the road, the neophyte is comfortable and can go
    back to learning more about J.

    So I am saying that all of your documentation has one major
    problem. It is strong on what and how, but weak on why.
    That is no problem for anyone on this forum, but a significant
    barrier to neophytes. If you have a desire for broader usage,
    that needs to be fixed.

            Don




----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to